Open nightkeo opened 7 years ago
Hello,
It would be better to use the latest version of BOUT++, which is here:
https://github.com/boutproject/BOUT-dev
see instructions and details here:
http://boutproject.github.io/download/
The test-initial check needs Python 3, but the other tests should work with either python 2 or 3.
I think this particular problem was also reported here and (I think) fixed:
https://github.com/boutproject/BOUT-dev/issues/551
Best
Ben
It also needs scipy - a missing scipy for python3 might be another option ...
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
####################################################################
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/(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)