[Users] Instabilities with Summation by Parts 4th order operator

Miguel Zilhão miguel.zilhao.nogueira at tecnico.ulisboa.pt
Thu Apr 9 13:08:47 CDT 2020


hi all,

i've been working on implementing the Summation by Parts (SBP) operators on some evolution codes i 
have and i was seeing some instabilities when using the 4th order accurate 2nd derivative operator.

in order to try to understand the problem better, i've coded a very simple thorn that evolves the 
wave equation in first-order in time, second-order in space form. i can evolve the system just fine 
without any problems with the SBP operators of order 2, 6 and 8. with order 4, however, there are 
instabilities propagating from the boundary that crash the code very early on. has anyone seen 
something like this before? could there be a bug in the 4th order 2nd derivative SBP operators, or 
am i doing something wrong? i find it very strange that it only crashes with the 4th order accurate 
2nd derivative SBP stencils (the code also seems to run fine with the parameter 
SummationByParts::sbp_2nd_deriv = no)...

i've uploaded this thorn (called IST_WaveToy) here: https://github.com/mzilhao/IST_WaveToy
i tried to keep everything as simple as possible. i'm attaching the thornlist used to checkout and 
compile the code, and in the repository i've also added the parameter files i tried with the 
different SBP orders (under ./par).

any help or comments would be appreciated.

thanks,
Miguel
-------------- next part --------------
# Component list for the Einstein Toolkit <http://einsteintoolkit.org/>
# $Revision$
# $Date$
# $HeadURL$

!CRL_VERSION = 1.0

!DEFINE ROOT = Cactus
!DEFINE ARR  = $ROOT/arrangements
!DEFINE COMPONENTLIST_TARGET = $ROOT/thornlists/

!DEFINE ET_RELEASE = ET_2019_03


# A note on CUDA and OpenCL:

# The thorns supporting and using CUDA and OpenCL are working and are
# part of the Einstein Toolkit. However, these thorns are currently
# commented out in this thorn list because most machines do not have
# CUDA or OpenCL libraries installed, and there are no good, free CUDA
# or OpenCL implementations yet which could be shipped with Cactus.

# If you want to experiment with CUDA or OpenCL and use these thorns
# (or look at their documentation), then uncomment these thorns in
# this thorn list, and use GetComponents to download these thorns.

# You have to uncomment these thorns (not here, but further below):
#   - CactusExamples/HelloWorldCUDA
#   - CactusExamples/HelloWorldOpenCL
#   - CactusExamples/WaveToyOpenCL
#   - CactusUtils/OpenCLRunTime
#   - CactusUtils/Accelerator
#   - ExternalLibraries/OpenCL
#   - McLachlan/ML_WaveToy_CL

# To download these thorns via GetComponents, use then the following
# command (on the same system where you originally used
# GetComponents):

#   cd Cactus (or whatever your source tree is called)
#   bin/GetComponents --update --root=. manifest/einsteintoolkit.th




# Cactus Flesh
!TARGET   = $ROOT
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactus.git
!NAME     = flesh
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT = .clang-format CONTRIBUTORS COPYRIGHT doc lib Makefile src

# CactusBase thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusbase.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
CactusBase/Boundary
CactusBase/CartGrid3D
CactusBase/CoordBase
CactusBase/Fortran
CactusBase/InitBase
CactusBase/IOASCII
CactusBase/IOBasic
CactusBase/IOUtil
CactusBase/SymBase
CactusBase/Time


# CactusIO thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusio.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
CactusIO/IOJpeg

# CactusNumerical thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusnumerical.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
CactusNumerical/Cartoon2D
CactusNumerical/Dissipation
CactusNumerical/InterpToArray
CactusNumerical/LocalInterp
CactusNumerical/LocalInterp2
CactusNumerical/LocalReduce
CactusNumerical/MoL
CactusNumerical/Noise
CactusNumerical/Norms
CactusNumerical/Periodic
CactusNumerical/ReflectionSymmetry
CactusNumerical/RotatingSymmetry180
CactusNumerical/RotatingSymmetry90
CactusNumerical/Slab
CactusNumerical/SlabTest
CactusNumerical/SpaceMask
CactusNumerical/SphericalSurface
CactusNumerical/SummationByParts
CactusNumerical/TensorTypes
CactusNumerical/TestLocalInterp2
CactusNumerical/TestLocalReduce

# CactusPUGH thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactuspugh.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
CactusPUGH/PUGH
CactusPUGH/PUGHInterp
CactusPUGH/PUGHReduce
CactusPUGH/PUGHSlab

# CactusPUGHIO thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactuspughio.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
CactusPUGHIO/IOHDF5
CactusPUGHIO/IOHDF5Util

# CactusUtils thorns
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/cactusutils.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT = CactusUtils/Accelerator CactusUtils/OpenCLRunTime
#DISABLED CactusUtils/Accelerator
# CactusUtils/Formaline
CactusUtils/MemSpeed
CactusUtils/NaNCatcher
CactusUtils/NaNChecker
CactusUtils/Nice
CactusUtils/NoMPI
#DISABLED CactusUtils/OpenCLRunTime
CactusUtils/SystemStatistics
CactusUtils/SystemTopology
CactusUtils/TerminationTrigger
CactusUtils/TimerReport
CactusUtils/Trigger
CactusUtils/Vectors
CactusUtils/WatchDog



# Carpet, the AMR driver
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/eschnett/carpet.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT = Carpet/doc
Carpet/Carpet
Carpet/CarpetEvolutionMask
Carpet/CarpetIOASCII
Carpet/CarpetIOBasic
Carpet/CarpetIOHDF5
Carpet/CarpetIOScalar
# Carpet/CarpetIntegrateTest
Carpet/CarpetInterp
Carpet/CarpetInterp2
Carpet/CarpetLib
Carpet/CarpetMask
# Carpet/CarpetProlongateTest
Carpet/CarpetReduce
Carpet/CarpetRegrid
Carpet/CarpetRegrid2
# Carpet/CarpetRegridTest
Carpet/CarpetSlab
Carpet/CarpetTracker
Carpet/CycleClock
# Carpet/HighOrderWaveTest
Carpet/LoopControl
Carpet/PeriodicCarpet
# Carpet/ReductionTest
# Carpet/ReductionTest2
# Carpet/ReductionTest3
# Carpet/RegridSyncTest
# Carpet/TestCarpetGridInfo
# Carpet/TestLoopControl
Carpet/Timers


# EinsteinUtils
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/einsteintoolkit/einsteinutils.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
# EinsteinUtils/SetMask_SphericalSurface
EinsteinUtils/TGRtensor


# Additional Cactus thorns
!TARGET   = $ARR
!TYPE     = svn
!URL      = https://github.com/EinsteinToolkit/$1-$2.git/trunk
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
# ExternalLibraries/OpenBLAS
# ExternalLibraries/OpenCL
# ExternalLibraries/pciutils
# ExternalLibraries/PETSc
ExternalLibraries/BLAS
ExternalLibraries/FFTW3
ExternalLibraries/GSL
ExternalLibraries/HDF5
ExternalLibraries/hwloc
ExternalLibraries/LAPACK
ExternalLibraries/libjpeg
# ExternalLibraries/LORENE
ExternalLibraries/MPI
#DISABLED ExternalLibraries/OpenBLAS
#DISABLED ExternalLibraries/OpenCL
ExternalLibraries/OpenSSL
ExternalLibraries/PAPI
#DISABLED ExternalLibraries/pciutils
#DISABLED ExternalLibraries/PETSc
ExternalLibraries/pthreads
ExternalLibraries/zlib


# From Kranc (required e.g. by McLachlan)
!TARGET   = $ARR
!TYPE     = git
!URL      = https://github.com/ianhinder/Kranc.git
!REPO_PATH= Auxiliary/Cactus
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
KrancNumericalTools/GenericFD


# Llama
!TARGET   = $ARR
!TYPE     = git
!AUTH_URL = https://bitbucket.org/llamacode/llama.git
!URL      = https://bitbucket.org/llamacode/llama.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
# Llama/ADMDerivatives
Llama/Coordinates
Llama/CoordinatesSymmetry
Llama/GlobalDerivative
Llama/Interpolate2
Llama/LlamaWaveToy
# Llama/WaveExtractL


# Numerical
!TARGET   = $ARR
!TYPE     = git
!URL      = https://bitbucket.org/cactuscode/numerical.git
!REPO_PATH= $2
!REPO_BRANCH = $ET_RELEASE
!CHECKOUT =
Numerical/AEILocalInterp

# IST_WaveToy
!TARGET    = $ARR
!TYPE      = git
!URL       = git at github.com:mzilhao/IST_WaveToy.git
!REPO_PATH = ../$2
!NAME      = IST_WaveToy
!REPO_BRANCH = master
!CHECKOUT = 
ISTThorns/IST_WaveToy


More information about the Users mailing list