Skip to content
This repository has been archived by the owner on Mar 27, 2018. It is now read-only.

Problem with test_suite #45

Open
nightkeo opened this issue May 8, 2017 · 2 comments
Open

Problem with test_suite #45

nightkeo opened this issue May 8, 2017 · 2 comments

Comments

@nightkeo
Copy link

nightkeo commented May 8, 2017

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)

@bendudson
Copy link
Owner

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:

boutproject/BOUT-dev#551

Best

Ben

@dschwoerer
Copy link

It also needs scipy - a missing scipy for python3 might be another option ...

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants