bendudson / bout Goto Github PK
View Code? Open in Web Editor NEWNOTE: BOUT++ now at https://github.com/boutproject/BOUT-dev
License: GNU Lesser General Public License v3.0
NOTE: BOUT++ now at https://github.com/boutproject/BOUT-dev
License: GNU Lesser General Public License v3.0
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
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.
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.
Running lapd_drift case with NXPE > 1 segfaults during initialisation
User should be able to change the level of logging required
involves adding a WARNING/ERROR/INFO type flag to output calls
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.
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)
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
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.
Related to issue #2, re-design how boundary conditions are set to replace the current ad-hoc function way
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.
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)
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:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BOUT_FLAGS = $(CXXFLAGS) -g -O2 -O -DCHECK=2 -DSIGHANDLE -DBACKTRACE -DNCDF -DBOUT_HAS_PVODE -std=c++11
CXX = mpic++
CC = $(CXX)
AR = ar
ARFLAGS = cruU
RANLIB = ranlib
MKDIR = @mkdir@
####################################################################
####################################################################
LD = $(CXX)
LDFLAGS =
####################################################################
####################################################################
EXTRA_INCS =
EXTRA_LIBS = -lfftw3 -lnetcdf -lnetcdf_c++ -L$(BOUT_TOP)/lib -lpvode -lpvpre
PRECON_SOURCE =
FACETS_SOURCE =
####################################################################
####################################################################
OBJ = $(SOURCEC:%.cxx=%.o)
LIB = $(BOUT_TOP)/lib/libbout++.a
BOUT_INCLUDE = -I$(BOUT_TOP)/include
BOUT_LIBS = -lm -L$(BOUT_TOP)/lib -lbout++ $(EXTRA_LIBS)
#DEPS = $(SOURCEC:.cxx=.d)
CHANGED =
ifndef TARGET
TARGET = $(SOURCEC:%.cxx=%)
endif
####################################################################
####################################################################
.PHONY: $(DIRS) lib install
all:
####################################################################
####################################################################
$(DIRS):
@$(MAKE) --no-print-directory -s -C $@ all
####################################################################
####################################################################
prefix = /usr/local
exec_prefix = ${prefix}
install: all
@$(MKDIR)
@$(MKDIR)
@$(MKDIR)
@echo "Installing header files into
@cp include/.hxx $(DESTDIR)${prefix}/include
@echo "Installing library files into $(DESTDIR)${exec_prefix}/lib"
@cp lib/.a
####################################################################
####################################################################
ifeq ("$(TARGET)", "lib")
#BEGIN 'lib'
####################################################################
####################################################################
#-include $(DEPS)
#%.d : %.cxx
####################################################################
####################################################################
####################################################################
####################################################################
lib: makefile
ifneq ("$(OBJ)foo", "foo")
@echo "Adding $(OBJ) to libbout++.a"
@$(AR)
@$(RANLIB) $(LIB)
endif
#END 'lib'
else
ifeq ("$(TARGET)", "sub")
LIB=$(MODULE_DIR)/$(SUB_NAME).a
sub: makefile
ifneq ("$(OBJ)foo", "foo")
@echo "Adding $(OBJ)"
@$(AR) cru
@$(RANLIB) $(LIB)
endif
else
####################################################################
####################################################################
%.a:
@echo "Rebuilding out-of-date bout++ library"
@$(MAKE) --no-print-directory -C $(BOUT_TOP)
####################################################################
####################################################################
SUB_LIBS=$(DIRS:%=%.a)
$(TARGET).cxx: checklib
@echo " Linking" $(TARGET)
@$(LD)
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)
####################################################################
####################################################################
clean::
-@$(RM) -rf
@for pp in
distclean: clean
@echo include cleaned
@$(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
####################################################################
####################################################################
MANUAL_DIR=$(BOUT_TOP)/manual
doxygen:
cd $(MANUAL_DIR)/doxygen && doxygen Doxyfile
breathe-autogen: doxygen
breathe-apidoc -f -o
sphinx-docs-html: breathe-autogen
sphinx-build -b html
sphinx-docs-latex: breathe-autogen
sphinx-build -b latex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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/(2pi)) (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(4x,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 = 4y (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)
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...
let's do it!
Should we make everything lowercase? I think I would like it all to appear the same. Thoughts?
Even using the C++ compiler, it treats .c files as C and so barfs on the namespace declaration
Need to rename *.c to *.cpp in the PVODE library
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.)?
There is a weird (*func) at two places in IdaSolver that breaks the compile
Solver interface to PETSc not compiling. Changed include file paths and other errors
To scale to more processors and make handling large numbers of output files less painful, we need a parallel I./O system. The ADIOS system from ORNL seems like a good option
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
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...
Need a check that the PVODE library did actually build
Code runs but produces incorrect result. valgrind reports uninitialised data
Suspect the cause is in the new X communications routines
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
Example doesn't produce the correct output
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"
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...
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.
Error encountered when compiling with pathscale compiler version 3.2 and MPICH
Compiling vector3d.cxx
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
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.
Can't compile PVODE on HECToR: Makefile uses $(CC) to compile, but include file llnltyps.h contains a namespace statement.
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.
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)
Listed on http://www.yaml.org/ are
LibYAML (http://pyyaml.org/wiki/LibYAML)
yaml-cpp (http://code.google.com/p/yaml-cpp/)
the boolean variables cannot be saved in the output file. See datafile.cxx
Only cvode_solver has been modified for new mesh, global variables change
Need to test (and probably fix) SUNDIALS, IDA and PETSc solvers
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]
Remove #ifdefs around msg_stack by making calls inline and wrapping up ifdefs
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
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?
Grid files store 3D variables as Fourier coefficients, but there is currently no Python routine to convert a 3D array in [x,y,z] into the correct representation.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.