Giter Club home page Giter Club logo

bout's Introduction

                   BOUT++ Distribution
                   ===================

Released under the Lesser General Public License (LGPL).

In this directory
-----------------

ABOUT                 More details and terms of use.

CITATION              Contains the paper citation for BOUT++

COPYING               GPL license
COPYING.LESSER        LGPL license

src                   The main code directory

manual                Contains documentation, in particular the user manual.
                      Read this if you're new to BOUT / BOUT++.

examples              Example models and test codes

tools                 Tools for helping with analysis, mesh generation, and data managment
  |/archiving         Routines for managing input/output files
  |                   e.g. compressing data, converting formats, and managing runs
  |
  |/idllib            Analysis codes in IDL. Add this to your IDL_PATH
  |                   environment variable.
  |
  |/pdb2idl           Library to read Portable Data Binary (PDB) files into IDL
  |
  |/pylib             Analysis codes in Python
  | |
  | |/boutdata        Routines to simplify accessing BOUT++ output
  | |
  | |/boututils       Some useful routines for accessing and plotting data
  |
  |/tokamak_grids     Code to generate input grids for tokamak equilibria
  | |
  | |/gridgen         Grid generator in IDL. Hypnotoad GUI for
  | |                 converting G-EQDSK files into a flux-aligned
  | |                 orthogonal grid.
  | |
  | |/elite           Convert ELITE .eqin files into an intermediate binary file
  | |
  | |/gato            Convert DSKGATO files into intermediate binary format
  | | 
  | |/all             Convert the intermediate binary file into BOUT++ input grid
  | |
  | |/shifted_circle  Produce shifted cirle equilibria input grids

bout's People

Contributors

bendudson avatar brettcfriedman avatar hzhang avatar ilonster avatar jarrodleddy avatar jedbrown avatar johnomotani avatar jpsauppe avatar lichengwang avatar machenhao avatar meyerson avatar seanfarley avatar sunssss avatar umansky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bout's Issues

D3D_119919 example

Creates some custom twist-shift locations which can't be replaced with Mesh calls now

Best way would be to re-think the input format to specify these things better.

Changing width of boundary region

It's often useful to adjust the width of boundary regions for individual variables. For example it's often useful to damp jparallel near the boundaries. When using shifted grids, boundaries need to be applied at different points for shifted and non-shifted variables.

A mechanism is needed to change the boundary width for each variable on each boundary separately. Probably easiest as a boundary modifier, so in BOUT.inp:

bndry_xin = width(neumann, 5)

would modify a Neumann boundary condition to have a width of 5 on the inner X boundary.

Output/logging levels

User should be able to change the level of logging required
involves adding a WARNING/ERROR/INFO type flag to output calls

Bug with overriding options on the command line

When overriding the NOUT and TIMESTEP variables, it seems that the output file is not written. It seems to be because the logic for determining whether or not to write the BOUT.dmp file is calculated before the command-line options are read.

I have not investigated this too much due to time but wanted to document it here. I will investivate after writing deadlines are finished.

Input parsing broken

Previous (0.80 version) output:

Setting X differencing methods
First : Fourth order central (C4)
Second : Fourth order central (C4)
Upwind : Third order WENO (W3)
Setting Y differencing methods
First : Fourth order central (C4)
Second : Fourth order central (C4)
Upwind : Third order WENO (W3)
Setting Z differencing methods
First : Fourth order central (C4)
Second : Fourth order central (C4)

Upwind : Third order WENO (W3)

Current output with the same BOUT.inp file

Setting X differencing methods
First : Option first = (default)
Second order central (C2)
Second : Option second = (default)
Second order central (C2)
Upwind : Option upwind = (default)
First order upwinding (U1)
Flux : Option flux = (default)
Split into upwind and central (SPLIT)
Setting Y differencing methods
First : Option first = (default)
Second order central (C2)
Second : Option second = (default)
Second order central (C2)
Upwind : Option upwind = (default)
First order upwinding (U1)
Flux : Option flux = (default)
Split into upwind and central (SPLIT)
Setting Z differencing methods
First : Option first = (default)
Second order central (C2)
Second : Option second = (default)
Second order central (C2)
Upwind : Option upwind = (default)

Doesn't find the setting for some reason, and output needs to be tidied up to make more readable

Can't download PVODE library on POWER machine

IBM POWER6 machine at Garching doesn't have curl, and wget hangs:

Resolving ftp.mcs.anl.gov... 140.221.8.61
Connecting to ftp.mcs.anl.gov[140.221.8.61]:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/petsc/boutpkgs ... done.
==> PORT ... done. ==> RETR pvode.tar.gz ...
Error in server response, closing control connection.

Retries and hangs.

Could simply add the pvode library to the repository to avoid troubles downloading.

Boundary settings

Related to issue #2, re-design how boundary conditions are set to replace the current ad-hoc function way

Non-uniform meshes not handled correctly

When nonuniform meshes are requested, correction term divides by "d2x" and is ill-behaved in the limit of uniform meshes. Hence setting non_uniform=true for a uniform mesh gives different results.

Domain labelling for boundary conditions

Global variable MYPE_IN_CORE is used by boundary.cpp to distinguish between boundary conditions for the "core" boundary, and the "private flux" / "pf" boundary which are both at X=0 on different processors, but generally need different handling.

The distinction between "core" and "pf" is specific to tokamaks, and in general a different labelling would be required. What should happen is:

The mesh class labels its regions however it wants. In the option file, boundary settings are looked for with names. Mesh provides a list of domain labels and a means to loop over them.

First the domain-specific settings: bndry_ = ...
Failing that, an "inner/outer" e.g. bndry_xinner = .... and bndry_yup = ...
Finally a general bndry = ...

This could/should be done by finishing the tables system in boundary.cpp (which isn't currently used)

Problem with test_suite

Dear doc Benduson,
I compiled BOUT and after running test_suite one test failed: initial_test. In particularly, function mixmode and mixmode_suite failed. How to solve this problem?

And what is the virsion of python requasted?

Machine: Ubuntu 14.04.5 on the VirtualBox.

make_config file:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

configuration file for BOUT++

September 2008: Converted to use autoconf. Can be manually edited

for the (very) rare occasions when autoconf fails

extra compilation flags:

-DCHECK Enables a host of additional checks on each operation

such as uninitialised data. Helps when debugging

-DTRACK Keeps track of variable names.

Enables more useful error messages

for SSE2: -msse2 -mfpmath=sse

This must also specify one or more file formats

-DPDBF PDB format (need to include pdb_format.cxx)

-DNCDF NetCDF format (nc_format.cxx)

PETSc config variables need to be first, else they may clobber other

options (e.g. CXX, CXXFLAGS)

Created this variable so that a user won't overwrite the CXXFLAGS variable

on the command line, just add to this one

BOUT_FLAGS = $(CXXFLAGS) -g -O2 -O -DCHECK=2 -DSIGHANDLE -DBACKTRACE -DNCDF -DBOUT_HAS_PVODE -std=c++11

Specify the MPI C++ compiler in CXX

CXX = mpic++
CC = $(CXX)

AR = ar
ARFLAGS = cruU
RANLIB = ranlib
MKDIR = @mkdir@

####################################################################

Do not need to alter anything below

####################################################################

LD = $(CXX)
LDFLAGS =

####################################################################

Extra (optional) source files, includes and libs

NOTE: EXTRA_SRC must include a solver (solver.cxx or ida_solver.cxx)

and a file format (nc_format.cxx or pdb_format.cxx)

####################################################################

EXTRA_INCS =
EXTRA_LIBS = -lfftw3 -lnetcdf -lnetcdf_c++ -L$(BOUT_TOP)/lib -lpvode -lpvpre

PRECON_SOURCE =
FACETS_SOURCE =

####################################################################

These are used for compiling physics modules using BOUT++ library

####################################################################

Files that are needed by configure and should be dependencies for 'all'

OBJ = $(SOURCEC:%.cxx=%.o)
LIB = $(BOUT_TOP)/lib/libbout++.a

BOUT_INCLUDE = -I$(BOUT_TOP)/include $(CXXINCLUDE) $(EXTRA_INCS)
BOUT_LIBS = -lm -L$(BOUT_TOP)/lib -lbout++ $(EXTRA_LIBS)

#DEPS = $(SOURCEC:.cxx=.d)
CHANGED = $(shell find -f $(BOUT_TOP)/include $(BOUT_TOP)/src -type f ( -name *.cxx -or -name *.h ) -newer $(LIB) -print 2> /dev/null)

Need to use ifndef because TARGET could be set in a file (as opposed to the command line or environment variable)

This will set a default if no TARGET is provided

ifndef TARGET
TARGET = $(SOURCEC:%.cxx=%)
endif

####################################################################

Definining stuff for recursive make

####################################################################

Phony targets since they are directory names

.PHONY: $(DIRS) lib install

all: $(BOUT_TOP)/config.status $(BOUT_TOP)/make.config $(DIRS) $(TARGET)

####################################################################

Recursively run make through subdirs

####################################################################

$(DIRS):
@$(MAKE) --no-print-directory -s -C $@ all

Create 'lib' and 'include' incase they don't exist

$(BOUT_TOP)/include $(BOUT_TOP)/lib:
$(MKDIR) $@

####################################################################

Install header files and libraries

####################################################################
prefix = /usr/local
exec_prefix = ${prefix}
install: all
@$(MKDIR) $(DESTDIR)${prefix}
@$(MKDIR) $(DESTDIR)${prefix}/include
@$(MKDIR) $(DESTDIR)${prefix}/lib
@echo "Installing header files into $(DESTDIR)${prefix}/include"
@cp include/.hxx $(DESTDIR)${prefix}/include
@echo "Installing library files into $(DESTDIR)${exec_prefix}/lib"
@cp lib/
.a $(DESTDIR)${exec_prefix}/lib

####################################################################

A bit of a clever hack that determines wheter the TARGET variable is 'lib'

then, if true, adds the .o files to libbout++.a, else, it links the .o's

into an executable

####################################################################

ifeq ("$(TARGET)", "lib")
#BEGIN 'lib'

####################################################################

The prerquisites of any .o file should depend on

$(BOUT_TOP)/make.config

$(BOUT_TOP)/makefile

which are generated by configuration

####################################################################

#-include $(DEPS)

This automatically generates dependency rules

#%.d : %.cxx

-@$(CXX) $(BOUT_INCLUDE) $(BOUT_FLAGS) -MF"$@" -MG -MP -MM -MT"$(<:.cxx=.o)" -fsyntax-only "$<" 2> /dev/null

####################################################################

Notes about the different flags:

-MF write the generated dependency rule to a file

-MG assume missing headers will be generated and don't stop with an error

-MM generate dependency rule for prerequisite, skipping system headers

-MP add phony target for each header to prevent errors when header is missing

-MT add a target to the generated dependency

####################################################################

####################################################################

Builds the library with $(OBJ) which is defined from the SOURCEC variable

####################################################################

lib: makefile $(BOUT_TOP)/make.config $(BOUT_TOP)/include $(BOUT_TOP)/lib $(OBJ)
ifneq ("$(OBJ)foo", "foo")
@echo "Adding $(OBJ) to libbout++.a"
@$(AR) $(ARFLAGS) $(LIB) $(OBJ)
@$(RANLIB) $(LIB)
endif

#END 'lib'
else

ifeq ("$(TARGET)", "sub")

LIB=$(MODULE_DIR)/$(SUB_NAME).a

sub: makefile $(BOUT_TOP)/make.config $(BOUT_TOP)/include $(BOUT_TOP)/lib $(OBJ)
ifneq ("$(OBJ)foo", "foo")
@echo "Adding $(OBJ)"
@$(AR) cru $(LIB) $(OBJ)
@$(RANLIB) $(LIB)
endif

else

####################################################################

Make libbout++.a if it doesn't exist with the checklib target

####################################################################
%.a:
@echo "Rebuilding out-of-date bout++ library"
@$(MAKE) --no-print-directory -C $(BOUT_TOP)

####################################################################

Make the target (e.g. gas_compress)

####################################################################
SUB_LIBS=$(DIRS:%=%.a)

$(TARGET).cxx: checklib
$(TARGET).o: $(LIB)
$(TARGET): makefile $(BOUT_TOP)/make.config $(OBJ) $(SUB_LIBS)
@echo " Linking" $(TARGET)
@$(LD) $(LDFLAGS) -o $(TARGET) $(OBJ) $(BOUT_LIBS) $(SUB_LIBS)

checklib:
ifneq ("$(CHANGED)foo", "foo")
@echo "Rebuilding out-of-date bout++ library"
@$(MAKE) --no-print-directory -C $(BOUT_TOP)
endif

endif

endif

%.o: $(BOUT_TOP)/make.config %.cxx
@echo " Compiling " $(@f:.o=.cxx)
@$(CXX) $(BOUT_INCLUDE) $(BOUT_FLAGS) -c $(@f:.o=.cxx) -o $@

####################################################################

Clean target. Pretty self explanatory.

NOTE: See that double colon (::) below? That's signifies a rule that can be added to later

See:

http://owen.sj.ca.us/~rk/howto/slides/make/slides/makecolon.html

####################################################################

clean::
-@$(RM) -rf $(OBJ) $(DEPS) $(TARGET)
@for pp in $(DIRS); do echo " " $$pp cleaned; $(MAKE) --no-print-directory -C $$pp clean; done

distclean: clean
@echo include cleaned

Removing the externalpackage installation. When we have more packages, need a better way

@$(RM) -rf $(BOUT_TOP)/include/pvode
@echo lib cleaned
@$(RM) -rf $(BOUT_TOP)/lib/*
-@$(RM) $(BOUT_TOP)/externalpackages/PVODE/lib/*.a
-@$(RM) $(BOUT_TOP)/externalpackages/PVODE/source/obj/*.o
-@$(RM) $(BOUT_TOP)/externalpackages/PVODE/precon/obj/*.o
-@$(RM) -rf $(BOUT_TOP)/autom4te.cache make.config
@echo externalpackages cleaned
@touch $(BOUT_TOP)/configure
@echo autom4te.cache cleaned

####################################################################

Documentation

####################################################################

MANUAL_DIR=$(BOUT_TOP)/manual

doxygen:
cd $(MANUAL_DIR)/doxygen && doxygen Doxyfile

breathe-autogen: doxygen
breathe-apidoc -f -o $(MANUAL_DIR)/sphinx/_breathe_autogen $(MANUAL_DIR)/doxygen/bout/xml

sphinx-docs-html: breathe-autogen
sphinx-build -b html $(MANUAL_DIR)/sphinx/ $(MANUAL_DIR)/sphinx/_build/

sphinx-docs-latex: breathe-autogen
sphinx-build -b latex $(MANUAL_DIR)/sphinx/ $(MANUAL_DIR)/sphinx/_build/

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

run.log in initial_test

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

BOUT++ version 4.00
Revision: Unknown
MD5 checksum: 946e3d8d5632995b8e2b5f5842f42209
Code compiled on May 8 2017 at 15:10:29

B.Dudson (University of York), M.Umansky (LLNL) 2007
Based on BOUT by Xueqiao Xu, 1999

Processor number: 0 of 4

pid: 17411

Compile-time options:
Checking enabled, level 2
Signal handling enabled
netCDF support enabled
Parallel NetCDF support disabled
OpenMP parallelisation disabled
Reading options file data/BOUT.inp

Getting grid data from options
Option mesh:type = bout (default)
Option mesh:StaggerGrids = false (default)
Setting X differencing methods
First : Second order central (C2)
Second : Second order central (C2)
Upwind : First order upwinding (U1)
Flux : Split into upwind and central (SPLIT)
Setting Y differencing methods
First : Second order central (C2)
Second : Second order central (C2)
Upwind : First order upwinding (U1)
Flux : Split into upwind and central (SPLIT)
Setting Z differencing methods
First : Second order central (C2)
Second : Second order central (C2)
Upwind : First order upwinding (U1)
Flux : Split into upwind and central (SPLIT)
Option mesh:symmetricglobalx = true (data/BOUT.inp)
Option mesh:symmetricGlobalY = false (default)
Loading mesh
Option mesh:nx = 7 (data/BOUT.inp)
Option mesh:ny = 12 (data/BOUT.inp)
Option :mz = 4 (data/BOUT.inp)
Grid size: 7 x 12 x 4
Option :mxg = 1 (data/BOUT.inp)
Option :myg = 1 (data/BOUT.inp)
WARNING: Separatrix location 'ixseps1' not found. Setting to 7
WARNING: Separatrix location 'ixseps2' not found. Setting to 7
WARNING: Branch-cut 'jyseps1_1' not found. Setting to -1
WARNING: Branch-cut 'jyseps1_2' not found. Setting to 6
WARNING: Branch-cut 'jyseps2_1' not found. Setting to 6
WARNING: Branch-cut 'jyseps2_2' not found. Setting to 11
WARNING: Number of inner y points 'ny_inner' not found. Setting to 6
Option :nxpe = 1 (data/BOUT.inp)
Option :IncIntShear = false (default)
Option :periodicX = false (default)
Option :async_send = false (default)
Option :ZMIN = 0 (default)
Option :ZMAX = 1 (default)
EQUILIBRIUM IS SINGLE NULL (SND)
Connection between top of Y processor 3 and bottom of 0 in range 0 <= x < 7
=> This processor sending in down
WARNING adding connection: poloidal index -1 out of range
MYPE_IN_CORE = 1
DXS = 7, DIN = 3. DOUT = -1
UXS = 0, UIN = -1. UOUT = 1
XIN = -1, XOUT = -1
Twist-shift: DI
Option :TwistShift = false (default)
Boundary regions in this processor: core, sol,
done
Option mesh:paralleltransform = identity (default)
Option :append = false (default)
Option :dump_format = nc (default)
Setting up output (dump) file
Option output:parallel = false (default)
Option output:flush = true (default)
Option output:guards = true (default)
Option output:floats = false (default)
Option output:openclose = true (default)
Option output:enabled = true (default)
Option output:init_missing = false (default)
Option output:shiftOutput = false (default)
Using NetCDF format for file 'data/BOUT.dmp.nc'
Variable 'dx' not in mesh options. Setting to 0.000000e+00
WARNING: differencing quantity 'dx' not found. Set to 1.0
Variable 'dy' not in mesh options. Setting to 0.000000e+00
WARNING: differencing quantity 'dy' not found. Set to 1.0
Option :ZMIN = 0 (default)
Option :ZMAX = 1 (default)
Variable 'g11' not in mesh options. Setting to 1.000000e+00
Variable 'g22' not in mesh options. Setting to 1.000000e+00
Variable 'g33' not in mesh options. Setting to 1.000000e+00
Variable 'g12' not in mesh options. Setting to 0.000000e+00
Variable 'g13' not in mesh options. Setting to 0.000000e+00
Variable 'g23' not in mesh options. Setting to 0.000000e+00
Maximum error in diagonal inversion is 0.000000e+00
Maximum error in off-diagonal inversion is 0.000000e+00
Variable 'J' not in mesh options. Setting to 0.000000e+00
WARNING: Jacobian 'J' not found. Calculating from metric tensor
Variable 'Bxy' not in mesh options. Setting to 0.000000e+00
WARNING: Magnitude of B field 'Bxy' not found. Calculating from metric tensor
Calculating differential geometry terms
Communicating connection terms
Option :non_uniform = false (default)
Variable 'd2x' not in mesh options. Setting to 0.000000e+00
WARNING: differencing quantity 'd2x' not found. Calculating from dx
Variable 'd2y' not in mesh options. Setting to 0.000000e+00
WARNING: differencing quantity 'd2y' not found. Calculating from dy
Variable 'ShiftTorsion' not in mesh options. Setting to 0.000000e+00
WARNING: No Torsion specified for zShift. Derivatives may not be correct
Option var_x:function = x (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option var_y:function = y (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option var_z:function = z (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option abs:function = abs(x - 0.5) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option add:function = x + 2 (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option asin:function = asin(y/(2pi)) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option acos:function = acos(y/(2
pi)) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option atan:function = atan(y/(2pi)) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option atan_y:function = atan(y,x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option ballooning:function = ballooning(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option ballooning_n:function = ballooning(x,5) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option cos:function = cos(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option cosh:function = cosh(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option exp:function = exp(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option tanh:function = tanh(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option gauss:function = gauss(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option gauss_width:function = gauss(x, 1.0) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option h:function = h(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option log:function = log(abs(x)) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option max:function = max(4
x,y-pi,z^3) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option min:function = min(4x,y-pi,z^3) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option minus:function = 4 - x (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option mixmode:function = mixmode(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option mixmode_seed:function = mixmode(x, 0.5) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option pi:function = z - pi (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option power:function = power(abs(x), y) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option sin:function = sin(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option sinh:function = sinh(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option sqrt:function = sqrt(abs(x)) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option square:function = y^2 (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option tan:function = tan(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option times:function = 4
y (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option erf:function = erf(x) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)
Option tanhhat:function = tanhhat(x, 0.5, 0.4, 0.3) (data/BOUT.inp)
Option all:scale = 1 (data/BOUT.inp)

Need X periodic

Orszag-Tang example needs X to be periodic. How to implement this?

Best way is to use a more general input grid format, though a "boundary" condition might work for now...

Renaming source files

Should we make everything lowercase? I think I would like it all to appear the same. Thoughts?

Namespace clash

Due to using common names, such as 'Mesh' and 'Solver,' we are running into compiler / linking issues when linking with other libraries. Open to suggestions but this came up with the use of 'real' which we hacked to 'BoutReal' but we need to fix this kind of problem once and for all. Should we use namespaces? Unique names (i.e. BoutMesh, BoutSolver, etc.)?

Petsc-3.3 solver

Solver interface to PETSc not compiling. Changed include file paths and other errors

Reorganization of source

Ben, can I change some of the organiZation of BOUT++? I don't want to keep cd'ing into BOUT/bout++/src. Can we just have one level? I'll make my changes to github.com/seanfarley/BOUT so you can see there

Segfault in lapd_drift for npes > 2

Running with 4 or more processors, the lapd_drift example case segfaults. Running valgrind on a single processor doesn't give anything obvious. Adding a line like

Field3D tmp = Ni0;

after reading in Ni0 also gives a segfault.
Am investigating...

Crash when fields used before mesh constructed

If a Field3D is assigned a value before mesh is created the code segfaults. Instead a warning message should be printed, exception thrown etc.

Long term fix is to require a mesh to create Field3D objects, but a short-term solution is probably needed

Multiple command-line arguments

Passing multiple arguments on command-line fails e.g.

nxpe=2 solver_type=pvode

gives exception: Multiple '=' in command-line argument 'nxpe=2=pvode'

seems to mangle the input and drop " solver_type"

UEDGE benchmark fails

After running a few timesteps, bails out with a non-finite number in Ni.DC() at the beginning of physics_run. Not sure how this is creeping in, but investigating...

Disappearing options printout

Some options aren't printed to stdout or log file, whilst others are.

Example is in lapd_drift example. Nothing is printed for the "nonlinear", "arakawa" or "bout_exb" options.

Pathscale 3.2 compiler error

Error encountered when compiling with pathscale compiler version 3.2 and MPICH

Compiling vector3d.cxx

Compiler Error in file vector3d.cxx during PU_adjust_addr_flags phase:

MLDID of Return_Val_Preg not allowed in middle of expression

pathCC INTERNAL ERROR: /usr/pppl/pathscale/3.2/lib/3.2/be returned non-zero status 1

Latest version of path64 suite works ok (at least on York's Snake machine)

Search for error message yields little info, and can't test further as don't have access to this configuration

Boundary function specification

would like to be able to specify more complex boundary conditions by specifying an algebraic expression. This is currently done for the initial conditions using the FieldFactory class, and would be good to extend this to boundary regions only.

Even better would be applying time-dependent boundary conditions this way, so in addition to 'x', 'y' and 'z' add 't' for time to the parser.

Laplace solver interface

The solve functions in class Laplacian (the interface to the user) should not be overridden by implementations. Instead, implementations should implement protected functions (not visible to the user), which are called by the interface functions.

This would help ensure a stable interface, and allow common tasks like timing and setting of result cell location to be done in one place.

I want to learn Bout++,who can teach me and give some advices?

Dear doc Benduson
I want to learn Bout++,but I find it difficult to understand the manual. I think ,first of all, I
want to learn the arithmetic of the software, even though I can't install it (This will consult my
tutor or professional). So I hope deeply you can recommend some papers to study your
arithmetic.
And the formulas of MHD in manual I can't understand, whether you can send me the relevant papers.I have search some relevant papers but I still can't find proper papers.
If necessary ,contact with email [email protected]
Sincere
Huang Yanqing (USTC)

Solvers need testing

Only cvode_solver has been modified for new mesh, global variables change

Need to test (and probably fix) SUNDIALS, IDA and PETSc solvers

How to install the Bout?

The problem is that I don't how to run the 'install',it isn't the 'exe' file. The mpi file also don't
be installed.
Anyone could help me ? If necesarry ,contact me with email [email protected]

Processor number

When an incorrect number of processors is used, currently the error just complains about processor boundaries not being aligned to branch-cuts

When this happens, should make it clearer that an invalid number of processors have been used, and if possible suggest some valid choices

MDSplus for input/output?

Could MDSplus or similar be used for archiving of simulation inputs, including physics source code, BOUT.inp settings, mesh file contents? Ideally some summary of the result e.g. fluctuation level, average profiles and some artificial diagnostics could be calculated and stored. The full dataset would then be stored somewhere else (or not).

This would make it easier to later repeat or adjust simulations, and compare previously run simulations.

Some work was started on this a long time ago (see tools/archiving/mdsplus), but not completed.

Worthwhile investment of time?

Unit testing framework?

Is it worth looking at using a unit testing framework such as Google Test, in addition to physics example tests?

Also, need to automate the current tests so they can be run regularly

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.