From 7c05ab152724573b390868b99d4d3eef00e147da Mon Sep 17 00:00:00 2001 From: shusa Date: Sun, 9 May 2004 19:34:21 +0000 Subject: Initial revision SKIPPED: Examples/ADM/ADMEqs.m Examples/ADM/ADMTT.m Examples/ADM/BuildADMTT Examples/ADM/KrancADMRicciMetric100.par Examples/ADM/KrancADMRicciStandard100.par Examples/ADM/KrancADMTT.m Examples/ADM/Makefile Examples/ADM/README Examples/ADM/ThornGenADM_front.nb Examples/ADM/ThornGen_ADM.m Examples/ADM/ThornGen_ADM2.m Examples/ADM/arrangement_KrancADM.tar.gz Examples/ADM/data_adm.tar.gz Examples/BSSN/BSSNTT.m Examples/BSSN/BuildBSSNTT Examples/BSSN/Makefile Examples/BSSN/freeBSSN/freeBSSN.th Examples/BSSN/freeBSSN/BSSNMoL/interface.ccl Examples/BSSN/freeBSSN/BSSNMoL/param.ccl Examples/BSSN/freeBSSN/BSSNMoL/schedule.ccl Examples/BSSN/freeBSSN/BSSNMoL/src/BSSNMoL_ApplyExcision.F90 Examples/BSSN/freeBSSN/BSSNMoL/src/BSSNMoL_Boundaries.c Examples/BSSN/freeBSSN/BSSNMoL/src/BSSNMoL_CalcRHS.c Examples/BSSN/freeBSSN/BSSNMoL/src/BSSNMoL_RegisterVars.c Examples/BSSN/freeBSSN/BSSNMoL/src/Startup.c Examples/BSSN/freeBSSN/BSSNMoL/src/make.code.defn Examples/BSSN/freeBSSN/BSSNMoL/src/precomputations.h Examples/BSSN/freeBSSN/BSSNTranslator/interface.ccl Examples/BSSN/freeBSSN/BSSNTranslator/param.ccl Examples/BSSN/freeBSSN/BSSNTranslator/schedule.ccl Examples/BSSN/freeBSSN/BSSNTranslator/src/BSSNTranslator_Setter.c Examples/BSSN/freeBSSN/BSSNTranslator/src/Startup.c Examples/BSSN/freeBSSN/BSSNTranslator/src/make.code.defn Examples/BSSN/freeBSSN/BSSNTranslator/src/precomputations.h Examples/BSSN/freeBSSN/OLDpar/BSSN2GaugeWaveR0.par Examples/BSSN/freeBSSN/OLDpar/BSSN2GaugeWaveR1.par Examples/BSSN/freeBSSN/OLDpar/BSSN2GaugeWaveR2.par Examples/BSSN/freeBSSN/OLDpar/BSSN2PolarizedGowdyCollapseR0.par Examples/BSSN/freeBSSN/OLDpar/BSSN2PolarizedGowdyCollapseR1.par Examples/BSSN/freeBSSN/OLDpar/BSSN2PolarizedGowdyCollapseR2.par Examples/BSSN/freeBSSN/OLDpar/BSSN2PolarizedGowdyExpandR0.par Examples/BSSN/freeBSSN/OLDpar/BSSN2PolarizedGowdyExpandR1.par Examples/BSSN/freeBSSN/OLDpar/BSSN2PolarizedGowdyExpandR2.par Examples/BSSN/freeBSSN/OLDpar/BSSN2RobustR0.par Examples/BSSN/freeBSSN/OLDpar/BSSN2RobustR1.par Examples/BSSN/freeBSSN/OLDpar/BSSN2RobustR2.par Examples/BSSN/freeBSSN/evalBSSNConstraints/interface.ccl Examples/BSSN/freeBSSN/evalBSSNConstraints/param.ccl Examples/BSSN/freeBSSN/evalBSSNConstraints/schedule.ccl Examples/BSSN/freeBSSN/evalBSSNConstraints/src/Startup.c Examples/BSSN/freeBSSN/evalBSSNConstraints/src/evalBSSNConstraints_Eval.c Examples/BSSN/freeBSSN/evalBSSNConstraints/src/make.code.defn Examples/BSSN/freeBSSN/evalBSSNConstraints/src/precomputations.h Examples/BSSN/freeBSSN/freeBSSNBase/interface.ccl Examples/BSSN/freeBSSN/freeBSSNBase/param.ccl Examples/BSSN/freeBSSN/freeBSSNBase/schedule.ccl Examples/BSSN/freeBSSN/freeBSSNBase/src/RegisterSymmetries.c Examples/BSSN/freeBSSN/freeBSSNBase/src/Startup.c Examples/BSSN/freeBSSN/freeBSSNBase/src/make.code.defn Examples/BSSN/freeBSSN/harmonicLapseMoL/interface.ccl Examples/BSSN/freeBSSN/harmonicLapseMoL/param.ccl Examples/BSSN/freeBSSN/harmonicLapseMoL/schedule.ccl Examples/BSSN/freeBSSN/harmonicLapseMoL/src/Startup.c Examples/BSSN/freeBSSN/harmonicLapseMoL/src/harmonicLapseMoL_ApplyExcision.F90 Examples/BSSN/freeBSSN/harmonicLapseMoL/src/harmonicLapseMoL_Boundaries.c Examples/BSSN/freeBSSN/harmonicLapseMoL/src/harmonicLapseMoL_CalcRHS.c Examples/BSSN/freeBSSN/harmonicLapseMoL/src/harmonicLapseMoL_RegisterVars.c Examples/BSSN/freeBSSN/harmonicLapseMoL/src/make.code.defn Examples/BSSN/freeBSSN/harmonicLapseMoL/src/precomputations.h Examples/BSSN/freeBSSN/par/BSSN2GaugeWaveR0.par Examples/BSSN/freeBSSN/par/BSSN2GaugeWaveR1.par Examples/BSSN/freeBSSN/par/BSSN2GaugeWaveR2.par Examples/BSSN/freeBSSN/par/BSSN2PolarizedGowdyCollapseR0.par Examples/BSSN/freeBSSN/par/BSSN2PolarizedGowdyCollapseR1.par Examples/BSSN/freeBSSN/par/BSSN2PolarizedGowdyCollapseR2.par Examples/BSSN/freeBSSN/par/BSSN2PolarizedGowdyExpandR0.par Examples/BSSN/freeBSSN/par/BSSN2PolarizedGowdyExpandR1.par Examples/BSSN/freeBSSN/par/BSSN2PolarizedGowdyExpandR2.par Examples/BSSN/freeBSSN/par/BSSN2RobustR0.par Examples/BSSN/freeBSSN/par/BSSN2RobustR1.par Examples/BSSN/freeBSSN/par/BSSN2RobustR2.par Examples/BSSN/freeBSSN/projectAlgebraicConstraints/interface.ccl Examples/BSSN/freeBSSN/projectAlgebraicConstraints/param.ccl Examples/BSSN/freeBSSN/projectAlgebraicConstraints/schedule.ccl Examples/BSSN/freeBSSN/projectAlgebraicConstraints/src/Startup.c Examples/BSSN/freeBSSN/projectAlgebraicConstraints/src/make.code.defn Examples/BSSN/freeBSSN/projectAlgebraicConstraints/src/precomputations.h Examples/BSSN/freeBSSN/projectAlgebraicConstraints/src/projectAlgebraicConstraints_Set.c Examples/BSSN/freeBSSN/setHarmonicLapse/interface.ccl Examples/BSSN/freeBSSN/setHarmonicLapse/param.ccl Examples/BSSN/freeBSSN/setHarmonicLapse/schedule.ccl Examples/BSSN/freeBSSN/setHarmonicLapse/src/Startup.c Examples/BSSN/freeBSSN/setHarmonicLapse/src/make.code.defn Examples/BSSN/freeBSSN/setHarmonicLapse/src/precomputations.h Examples/BSSN/freeBSSN/setHarmonicLapse/src/setHarmonicLapse_Set.c Examples/BSSN/freeBSSN/setUnitLapse/interface.ccl Examples/BSSN/freeBSSN/setUnitLapse/param.ccl Examples/BSSN/freeBSSN/setUnitLapse/schedule.ccl Examples/BSSN/freeBSSN/setUnitLapse/src/Startup.c Examples/BSSN/freeBSSN/setUnitLapse/src/make.code.defn Examples/BSSN/freeBSSN/setUnitLapse/src/precomputations.h Examples/BSSN/freeBSSN/setUnitLapse/src/setUnitLapse_Set.c Examples/BSSN/freeBSSN/setZeroShift/interface.ccl Examples/BSSN/freeBSSN/setZeroShift/param.ccl Examples/BSSN/freeBSSN/setZeroShift/schedule.ccl Examples/BSSN/freeBSSN/setZeroShift/src/Startup.c Examples/BSSN/freeBSSN/setZeroShift/src/make.code.defn Examples/BSSN/freeBSSN/setZeroShift/src/precomputations.h Examples/BSSN/freeBSSN/setZeroShift/src/setZeroShift_Set.c Examples/KleinGordon/Components.nb Examples/KleinGordon/KGTT.m Examples/KleinGordon/ListOfEqsLhsRhsComp.m Examples/KleinGordon/MKG100.par Examples/KleinGordon/MKGTT.m Examples/KleinGordon/README Examples/KleinGordon/ThornGen_front.nb Examples/KleinGordon/arrangement_MKG.tar.gz Examples/KleinGordon/data_mkg.tar.gz Examples/Maxwell/3+1_Decomp_Maxwell.nb Examples/Maxwell/EM100.par Examples/Maxwell/EMTT.m Examples/Maxwell/Initializations_Maxwell.nb Examples/Maxwell/ListOfConstrComp.m Examples/Maxwell/ListOfEqsLhsRhsComp.m Examples/Maxwell/Maxwell_Demo.nb Examples/Maxwell/README Examples/Maxwell/README_internal Examples/Maxwell/ThornGen_front.nb Examples/Maxwell/Using_Tools_Constr.nb Examples/Maxwell/arrangement_EM.tar.gz Examples/Maxwell/data_em.tar.gz Tools/TensorFactory/ComponentsTools.nb Tools/TensorFactory/DecomposeTools.nb Tools/TensorFactory/FrameDecomposeTools.nb Tools/TensorFactory/GaussCodazzi.nb Tools/TensorFactory/Ricci.tex Tools/TensorFactory/StartMathTensor.m Tools/TensorFactory/TeXTools.nb Tools/TensorFactory/Doc/Characteristics.nb Tools/TensorFactory/Doc/DocGaussCodazzi.nb Tools/TensorFactory/Doc/Om1EvolEqs.m Tools/TensorFactory/Doc/exampleTeX.nb Tools/TensorFactory/Doc/Papers/ERE2003.pdf Tools/TensorFactory/Doc/Talks/compalg.pdf --- .../KrancNumericalTools/GenericFD/interface.ccl | 10 + .../Cactus/KrancNumericalTools/GenericFD/param.ccl | 15 + .../KrancNumericalTools/GenericFD/schedule.ccl | 12 + .../KrancNumericalTools/GenericFD/src/GenericFD.c | 41 ++ .../KrancNumericalTools/GenericFD/src/GenericFD.h | 427 +++++++++++++++++++++ .../GenericFD/src/MathematicaCompat.h | 25 ++ .../KrancNumericalTools/GenericFD/src/Startup.c | 60 +++ .../GenericFD/src/make.code.defn | 8 + .../KrancNumericalTools/GenericFD/src/testmacros.c | 23 ++ 9 files changed, 621 insertions(+) create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/interface.ccl create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/param.ccl create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/schedule.ccl create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.c create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/Startup.c create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/make.code.defn create mode 100644 Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/testmacros.c (limited to 'Auxiliary') diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/interface.ccl b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/interface.ccl new file mode 100644 index 0000000..b1637b4 --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/interface.ccl @@ -0,0 +1,10 @@ +# GenericFD/interface.ccl +# Interface definition for thorn GenericFD +# author: S. Husa + +# $Header$ + +implements: GenericFD + +INCLUDE HEADER: GenericFD.h in GenericFD.h + diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/param.ccl b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/param.ccl new file mode 100644 index 0000000..62adf93 --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/param.ccl @@ -0,0 +1,15 @@ +# GenericFD/param.ccl +# Parameter definition for thorn GenericFD +# author: S. Husa + +# $Header$ + +private: + +KEYWORD FDscheme "Type of finite differencing to use" +{ + "2nd order centered macro" :: "centered 2nd order implemented with macros" + "4th order centered macro" :: "centered 4th order implemented with macros" +} "2nd order centered macro" + + diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/schedule.ccl b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/schedule.ccl new file mode 100644 index 0000000..a56f002 --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/schedule.ccl @@ -0,0 +1,12 @@ +# GenericFD/schedule.ccl +# Schedule definition for thorn GenericFD +# author: S. Husa + +# $Header$ + + + +schedule GenericFD_Startup at STARTUP +{ + LANG: C +} "Register Banner" diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.c b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.c new file mode 100644 index 0000000..c3aa020 --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.c @@ -0,0 +1,41 @@ +/*@@ + @file GenericFD/src/GenericFD.c + @date June 16 2002 + @author S. Husa + @desc + + $Id$ + + @enddesc + @@*/ + +/* Copyright 2004 Sascha Husa, Ian Hinder, Christiane Lechner + + This file is part of Kranc. + + Kranc is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Kranc is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Foobar; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "Symmetry.h" + +#include "GenericFD.h" + + +/* TODO: provide functions for differencing, use FD macros to + evaluate == use macros to evaluate corresponding functions */ diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h new file mode 100644 index 0000000..9bc1002 --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/GenericFD.h @@ -0,0 +1,427 @@ +/*@@ + @file GenericFD/src/GenericFD.h + @date June 16 2002 + @author S. Husa + @desc + + $Id$ + + @enddesc + @@*/ + +/* Copyright 2004 Sascha Husa, Ian Hinder, Christiane Lechner + + This file is part of Kranc. + + Kranc is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Kranc is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Foobar; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef NOPRECOMPUTE +#define PRECOMPUTE +#endif + +#if defined(FD_C0) || defined(FD_C2) || defined(FD_C4) || defined(FD_C2C4) +#define FD_SET_BY_USER +#endif +#ifndef FD_SET_BY_USER +#define FD_C2 +#endif + + +#if defined(FD_C0) +#define FD_METHOD_DESC "FD method: replace derivatives by zero" +#endif + +#if defined(FD_C2) +#define FD_METHOD_DESC "FD method: second order centered finite differences" +#endif + +#if defined(FD_C4) +#define FD_METHOD_DESC "FD method: fourth order centered finite differences" +#endif + +#if defined(FD_C2C4) +#define FD_METHOD_DESC "FD method: weighted 2nd/4th order centered finite differences" +#endif + + + +/* utility functions */ +#if defined(KRANC_C) +#define string(d,f) d ## f +#else +#define string(d,f) d/**/f +#endif + +#include "MathematicaCompat.h" + +/* finite differencing macros */ + +/* */ +/* add method argument to shorthands */ +/* */ + +/* second derivatives */ +#define D11x(gf) string(D11,gf) +#define D22x(gf) string(D22,gf) +#define D33x(gf) string(D33,gf) +#define D21x(gf) string(D21,gf) +#define D32x(gf) string(D32,gf) +#define D31x(gf) string(D31,gf) + +/* first derivatives */ +#define D1x(gf) string(D1,gf) +#define D2x(gf) string(D2,gf) +#define D3x(gf) string(D3,gf) + +#ifdef PRECOMPUTE + +/* second derivatives */ +#define D11(gf,i,j,k) string(D11,gf) +#define D22(gf,i,j,k) string(D22,gf) +#define D33(gf,i,j,k) string(D33,gf) +#define D21(gf,i,j,k) string(D21,gf) +#define D32(gf,i,j,k) string(D32,gf) +#define D31(gf,i,j,k) string(D31,gf) + +/* first derivatives */ +#define D1(gf,i,j,k) string(D1,gf) +#define D2(gf,i,j,k) string(D2,gf) +#define D3(gf,i,j,k) string(D3,gf) + +#else + +/* second derivatives */ +#define D11(gf,i,j,k) D11gf(gf,i,j,k) +#define D22(gf,i,j,k) D22gf(gf,i,j,k) +#define D33(gf,i,j,k) D33gf(gf,i,j,k) +#define D21(gf,i,j,k) D21gf(gf,i,j,k) +#define D32(gf,i,j,k) D32gf(gf,i,j,k) +#define D31(gf,i,j,k) D31gf(gf,i,j,k) + +/* first derivatives */ +#define D1(gf,i,j,k) D1gf(gf, i,j,k) +#define D2(gf,i,j,k) D2gf(gf, i,j,k) +#define D3(gf,i,j,k) D3gf(gf, i,j,k) + +#endif + + +#ifdef FD_C0 +/* second derivatives */ +#define D11gf(gf,i,j,k) D11_c0(gf,i,j,k) +#define D22gf(gf,i,j,k) D22_c0(gf,i,j,k) +#define D33gf(gf,i,j,k) D33_c0(gf,i,j,k) +#define D21gf(gf,i,j,k) D21_c0(gf,i,j,k) +#define D32gf(gf,i,j,k) D32_c0(gf,i,j,k) +#define D31gf(gf,i,j,k) D31_c0(gf,i,j,k) + +/* first derivatives */ +#define D1gf(gf,i,j,k) D1_c0(gf, i,j,k) +#define D2gf(gf,i,j,k) D2_c0(gf, i,j,k) +#define D3gf(gf,i,j,k) D3_c0(gf, i,j,k) +#endif + + + +#ifdef FD_C2 +/* second derivatives */ +#define D11gf(gf,i,j,k) D11_c2(gf,i,j,k) +#define D22gf(gf,i,j,k) D22_c2(gf,i,j,k) +#define D33gf(gf,i,j,k) D33_c2(gf,i,j,k) +#define D21gf(gf,i,j,k) D21_c2(gf,i,j,k) +#define D32gf(gf,i,j,k) D32_c2(gf,i,j,k) +#define D31gf(gf,i,j,k) D31_c2(gf,i,j,k) + +/* first derivatives */ +#define D1gf(gf,i,j,k) D1_c2(gf, i,j,k) +#define D2gf(gf,i,j,k) D2_c2(gf, i,j,k) +#define D3gf(gf,i,j,k) D3_c2(gf, i,j,k) +#endif + + + +#ifdef FD_C4 +/* second derivatives */ +#define D11gf(gf,i,j,k) D11_c4(gf,i,j,k) +#define D22gf(gf,i,j,k) D22_c4(gf,i,j,k) +#define D33gf(gf,i,j,k) D33_c4(gf,i,j,k) +#define D21gf(gf,i,j,k) D21_c4(gf,i,j,k) +#define D32gf(gf,i,j,k) D32_c4(gf,i,j,k) +#define D31gf(gf,i,j,k) D31_c4(gf,i,j,k) + +/* first derivatives */ +#define D1gf(gf,i,j,k) D1_c4(gf, i,j,k) +#define D2gf(gf,i,j,k) D2_c4(gf, i,j,k) +#define D3gf(gf,i,j,k) D3_c4(gf, i,j,k) +#endif + + +#ifdef FD_C2C4 +/* second derivatives */ +#define D11gf(gf,i,j,k) D11_c2c4(gf,i,j,k) +#define D22gf(gf,i,j,k) D22_c2c4(gf,i,j,k) +#define D33gf(gf,i,j,k) D33_c2c4(gf,i,j,k) +#define D21gf(gf,i,j,k) D21_c2c4(gf,i,j,k) +#define D32gf(gf,i,j,k) D32_c2c4(gf,i,j,k) +#define D31gf(gf,i,j,k) D31_c2c4(gf,i,j,k) + +/* first derivatives */ +#define D1gf(gf,i,j,k) D1_c2c4(gf, i,j,k) +#define D2gf(gf,i,j,k) D2_c2c4(gf, i,j,k) +#define D3gf(gf,i,j,k) D3_c2c4(gf, i,j,k) +#endif + + + + +/*****************************************************/ +/* */ +/* METHODS */ +/* */ +/*****************************************************/ + +/* c0 */ + +/* set all derivatives = 0 */ +/* for debugging and benchmarking */ + +/* second derivatives */ + +#define D11_c0(gf,i,j,k) 0. +#define D22_c0(gf,i,j,k) 0. +#define D33_c0(gf,i,j,k) 0. +#define D21_c0(gf,i,j,k) 0. +#define D32_c0(gf,i,j,k) 0. +#define D31_c0(gf,i,j,k) 0. + +/* first derivatives */ + +#define D1_c0(gf,i,j,k) 0. +#define D2_c0(gf,i,j,k) 0. +#define D3_c0(gf,i,j,k) 0. + + +/* c2 */ +/* */ +/* 2nd order centered */ +/* */ +/* second derivatives, centered, 2nd order */ + +#ifndef KRANC_C +#define D11_c2(gf,i,j,k) \ + (( gf(i+1,j,k) \ + - 2.*gf(i, j,k) \ + + gf(i-1,j,k)) * dxi * dxi ) + +#define D22_c2(gf,i,j,k) \ + (( gf(i,j+1,k) \ + - 2.*gf(i,j, k) \ + + gf(i,j-1,k)) * dyi * dyi ) + +#define D33_c2(gf,i,j,k) \ + (( gf(i,j,k+1) \ + - 2.*gf(i,j,k ) \ + + gf(i,j,k-1)) * dzi * dzi ) + +#define D21_c2(gf,i,j,k) \ + ((gf(i+1,j+1,k) \ + + gf(i-1,j-1,k) \ + - gf(i+1,j-1,k) \ + - gf(i-1,j+1,k)) * hdxi * hdyi ) + +#define D32_c2(gf,i,j,k) \ + ((gf(i,j+1,k+1) \ + + gf(i,j-1,k-1) \ + - gf(i,j+1,k-1) \ + - gf(i,j-1,k+1)) * hdyi * hdzi ) + +#define D31_c2(gf,i,j,k) \ + ((gf(i+1,j,k+1) \ + + gf(i-1,j,k-1) \ + - gf(i+1,j,k-1) \ + - gf(i-1,j,k+1)) * hdxi * hdzi ) + +/* first derivatives, centered, 2nd order */ + +#define D1_c2(gf,i,j,k) \ + ((gf(i+1,j,k) \ + - gf(i-1,j,k)) * hdxi) + +#define D2_c2(gf,i,j,k) \ + ((gf(i,j+1,k) \ + - gf(i,j-1,k)) * hdyi) + +#define D3_c2(gf,i,j,k) \ + ((gf(i,j,k+1) \ + - gf(i,j,k-1)) * hdzi) + +#else + + +#define D11_c2(gf,i,j,k) \ + (( gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k)] \ + - 2.*gf[CCTK_GFINDEX3D(cctkGH,i, j,k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k)]) * dxi * dxi ) + +#define D22_c2(gf,i,j,k) \ + (( gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k)] \ + - 2.*gf[CCTK_GFINDEX3D(cctkGH,i,j, k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k)]) * dyi * dyi ) + +#define D33_c2(gf,i,j,k) \ + (( gf[CCTK_GFINDEX3D(cctkGH,i,j,k+1)] \ + - 2.*gf[CCTK_GFINDEX3D(cctkGH,i,j,k )] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j,k-1)]) * dzi * dzi ) + +#define D21_c2(gf,i,j,k) \ + ((gf[CCTK_GFINDEX3D(cctkGH,i+1,j+1,k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i-1,j-1,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i+1,j-1,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i-1,j+1,k)]) * hdxi * hdyi ) + +#define D32_c2(gf,i,j,k) \ + ((gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k+1)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k-1)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k-1)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k+1)]) * hdyi * hdzi ) + +#define D31_c2(gf,i,j,k) \ + ((gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k+1)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k-1)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k-1)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k+1)]) * hdxi * hdzi ) + +/* first derivatives, centered, 2nd order */ + +#define D1_c2(gf,i,j,k) \ + ((gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k)]) * hdxi) + +#define D2_c2(gf,i,j,k) \ + ((gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k)]) * hdyi) + +#define D3_c2(gf,i,j,k) \ + ((gf[CCTK_GFINDEX3D(cctkGH,i,j,k+1)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j,k-1)]) * hdzi) + +#endif + + +/* c4 */ +/* */ +/* 4th order centered */ +/* */ + +/* second derivatives, centered, 4th order */ + +#define D11_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i+2,j,k)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k)] \ + - 30. * gf[CCTK_GFINDEX3D(cctkGH,i, j,k)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i-2,j,k)]) * dxi * dxi / 12.) + + +#define D22_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i,j+2,k)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k)] \ + - 30. * gf[CCTK_GFINDEX3D(cctkGH,i,j, k)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j-2,k)]) * dyi * dyi / 12.) + + +#define D33_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i,j,k+2)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j,k+1)] \ + - 30. * gf[CCTK_GFINDEX3D(cctkGH,i,j,k )] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j,k-1)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j,k-2)]) * dzi * dzi / 12.) + +#define D21_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i+2,j+2,k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i+2,j-2,k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i-2,j+2,k)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i-2,j-2,k)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i+1,j+1,k)] \ + - 16. * gf[CCTK_GFINDEX3D(cctkGH,i+1,j-1,k)] \ + - 16. * gf[CCTK_GFINDEX3D(cctkGH,i-1,j+1,k)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i-1,j-1,k)]) * dxi * dyi / 48.) + +#define D31_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i+2,j,k+2)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i+2,j,k-2)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i-2,j,k+2)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i-2,j,k-2)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k+1)] \ + - 16. * gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k-1)] \ + - 16. * gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k+1)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k-1)]) * dxi * dzi / 48.) + + +#define D32_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i,j+2,k+2)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j+2,k-2)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j-2,k+2)] \ + - gf[CCTK_GFINDEX3D(cctkGH,i,j-2,k-2)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k+1)] \ + - 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k-1)] \ + - 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k+1)] \ + + 16. * gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k-1)]) * dzi * dyi / 48.) + + +/* first derivatives, centered, 4th order */ + +#define D1_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i+2,j,k)] \ + + 8. * gf[CCTK_GFINDEX3D(cctkGH,i+1,j,k)] \ + - 8. * gf[CCTK_GFINDEX3D(cctkGH,i-1,j,k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i-2,j,k)]) * (dxi / 12.)) + +#define D2_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i,j+2,k)] \ + + 8. * gf[CCTK_GFINDEX3D(cctkGH,i,j+1,k)] \ + - 8. * gf[CCTK_GFINDEX3D(cctkGH,i,j-1,k)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j-2,k)]) * (dyi / 12.)) + +#define D3_c4(gf,i,j,k) \ + ((- gf[CCTK_GFINDEX3D(cctkGH,i,j,k+2)] \ + + 8. * gf[CCTK_GFINDEX3D(cctkGH,i,j,k+1)] \ + - 8. * gf[CCTK_GFINDEX3D(cctkGH,i,j,k-1)] \ + + gf[CCTK_GFINDEX3D(cctkGH,i,j,k-2)]) * (dxi / 12.)) + + +/*****************************************************/ +/* */ +/* DERIVED METHODS */ +/* */ +/******************************************************/ + + +/* blend c2 and c4 */ +/* second derivatives */ +#define D11_c2c4(gf,i,j,k) (fdweight_c2*D11_c2(gf,i,j,k) + fdweight_c4*D11_c4(gf,i,j,k)) +#define D22_c2c4(gf,i,j,k) (fdweight_c2*D22_c2(gf,i,j,k) + fdweight_c4*D22_c4(gf,i,j,k)) +#define D33_c2c4(gf,i,j,k) (fdweight_c2*D33_c2(gf,i,j,k) + fdweight_c4*D33_c4(gf,i,j,k)) +#define D21_c2c4(gf,i,j,k) (fdweight_c2*D21_c2(gf,i,j,k) + fdweight_c4*D21_c4(gf,i,j,k)) +#define D32_c2c4(gf,i,j,k) (fdweight_c2*D32_c2(gf,i,j,k) + fdweight_c4*D32_c4(gf,i,j,k)) +#define D31_c2c4(gf,i,j,k) (fdweight_c2*D31_c2(gf,i,j,k) + fdweight_c4*D31_c4(gf,i,j,k)) + +/* first derivatives */ +#define D1_c2c4(gf,i,j,k) (fdweight_c2*D1_c2(gf, i,j,k) + fdweight_c4*D1_c4(gf,i,j,k)) +#define D2_c2c4(gf,i,j,k) (fdweight_c2*D2_c2(gf, i,j,k) + fdweight_c4*D2_c4(gf,i,j,k)) +#define D3_c2c4(gf,i,j,k) (fdweight_c2*D3_c2(gf, i,j,k) + fdweight_c4*D3_c4(gf,i,j,k)) + diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h new file mode 100644 index 0000000..74136cc --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h @@ -0,0 +1,25 @@ + +#define Power(x, y) (pow((x), (y))) +#define Sqrt(x) (sqrt((x))) + +#define Abs(x) (fabs((x))) + +#define Exp(x) (exp((x))) +#define Log(x) (log((x))) + +#define Sin(x) (sin((x))) +#define Cos(x) (cos((x))) +#define Tan(x) (tan((x))) + +#define ArcSin(x) (asin((x))) +#define ArcCos(x) (acos((x))) +#define ArcTan(x) (atan((x))) + +#define Sinh(x) (sinh((x))) +#define Cosh(x) (cosh((x))) +#define Tanh(x) (tanh((x))) + + +#define E 2.71828182845904523536029 +#define Pi 3.14159265358979323846264 + diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/Startup.c b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/Startup.c new file mode 100644 index 0000000..e54bcee --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/Startup.c @@ -0,0 +1,60 @@ +/*@@ + @file GenericFD/src/Startup.c + @date June 16 2002 + @author S. Husa + @desc + Register Banner - straight copy of WaveToy + + $Header$ + + @enddesc + @@*/ + +/* Copyright 2004 Sascha Husa, Ian Hinder, Christiane Lechner + + This file is part of Kranc. + + Kranc is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Kranc is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Foobar; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "cctk.h" +#include "GenericFD.h" + +int GenericFD_Startup(void); + +/*@@ + @routine GenericFD_Startup + @date June 16 2002 + @author S. Husa + @desc + + @enddesc + @calls + @calledby + @history + @endhistory + @@*/ + + + +int GenericFD_Startup(void) +{ + const char *banner = "GenericFD: generic finite differencing"; + CCTK_RegisterBanner(banner); + + + CCTK_INFO(FD_METHOD_DESC); + return 0; + } diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/make.code.defn b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/make.code.defn new file mode 100644 index 0000000..ccff2fb --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/make.code.defn @@ -0,0 +1,8 @@ +# Main make.code.defn file for thorn GenericFD +# $Header$ + +# Source files in this directory +SRCS = Startup.c GenericFD.c + +# Subdirectories containing source files +SUBDIRS = diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/testmacros.c b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/testmacros.c new file mode 100644 index 0000000..3208ea0 --- /dev/null +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/testmacros.c @@ -0,0 +1,23 @@ +/* process me with something like + * cpp -DFD_C2 testmacros.c + */ + + +#include "GenericFD.h" + + +dummy = D11loc(testfunc,i,j,k); + +dummy = D11gf(testfunc,i,j,k); + +dummy = D11_c2c4(testfunc,i,j,k); + +dummy = D11(testfunc,i,j,k); + +dummy = D31(testfunc,i,j,k); + +dummy = D1(testfunc,i,j,k); + + +DECLAREVARS + -- cgit v1.2.3