From efb87a15fc6201a9511e124e56737fef7f36edf6 Mon Sep 17 00:00:00 2001 From: Ian Hinder Date: Thu, 30 Sep 2010 00:58:30 +0100 Subject: MathematicaCompat.h: Add MinMod function --- Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Auxiliary/Cactus') diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h index 29c89d1..bd9f1e5 100644 --- a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h @@ -15,6 +15,8 @@ /* IfThen cannot be expressed in Fortran */ #endif +#define MinMod(x, y) ((x) * (y) < 0 ? 0 : (fabs((x)) < fabs((y)) ? (x) : (y))) + #define Exp(x) (exp(x)) #define Log(x) (log(x)) -- cgit v1.2.3 From 360447ee27288198b70c30bf2f2f10ace3dc29b9 Mon Sep 17 00:00:00 2001 From: Ian Hinder Date: Thu, 30 Sep 2010 20:55:17 +0200 Subject: MathematicaCompat.h: Add Min3 and VanLeer macros --- .../KrancNumericalTools/GenericFD/src/MathematicaCompat.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'Auxiliary/Cactus') diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h index bd9f1e5..bf5936d 100644 --- a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h @@ -6,6 +6,7 @@ #ifdef KRANC_C #define Abs(x) (fabs(x)) #define Min(x, y) (fmin((x), (y))) +#define Min3(x, y, z) (fmin(fmin((x), (y)), (z))) #define Max(x, y) (fmax((x), (y))) #define IfThen(x,y,z) ((x) ? (y) : (z)) #else @@ -15,8 +16,16 @@ /* IfThen cannot be expressed in Fortran */ #endif +#ifdef KRANC_C +#define Sign(x) (signbit(x)?-1:+1) +#else +#define Sign(x) (sgn(x)) +#endif + #define MinMod(x, y) ((x) * (y) < 0 ? 0 : (fabs((x)) < fabs((y)) ? (x) : (y))) +#define VanLeer(x, y) ((x) * (y) < 0 ? 0 : (Min3(2*fabs(x),2*fabs(y),0.5*(fabs(x)+fabs(y)))*Sign((x)+(y)))) + #define Exp(x) (exp(x)) #define Log(x) (log(x)) @@ -32,12 +41,6 @@ #define Cosh(x) (cosh(x)) #define Tanh(x) (tanh(x)) -#ifdef KRANC_C -#define Sign(x) (signbit(x)?-1:+1) -#else -#define Sign(x) (sgn(x)) -#endif - #ifdef KRANC_C #define E M_E #define Pi M_PI -- cgit v1.2.3 From 763e38daee0f8808d1497e78e75a91fe8dfd3fc7 Mon Sep 17 00:00:00 2001 From: Ian Hinder Date: Fri, 3 Jun 2011 18:11:41 +0200 Subject: Temporary commit --- .../GenericFD/src/MathematicaCompat.h | 2 +- Examples/EulerSR.m | 8 +++-- Examples/kranc.th | 18 ++++++---- Tools/CodeGen/ConservationCalculation.m | 39 +++++++++++++--------- Tools/CodeGen/Kranc.m | 2 +- Tools/CodeGen/KrancThorn.m | 5 ++- 6 files changed, 46 insertions(+), 28 deletions(-) (limited to 'Auxiliary/Cactus') diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h index bf5936d..86b70eb 100644 --- a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h @@ -49,4 +49,4 @@ #define Pi 3.14159265358979323846264d0 #endif -#define UnitStep(x) ( (x) > 0 ? 1 : 0 ) +#define StepFunction(x) ( (x) > 0 ? 1 : 0 ) diff --git a/Examples/EulerSR.m b/Examples/EulerSR.m index 2c58c96..e868742 100644 --- a/Examples/EulerSR.m +++ b/Examples/EulerSR.m @@ -109,7 +109,10 @@ eulerCons = pBar -> p, (* from previous timestep *) (* Start loop *) - Sequence@@Join@@Table[ + f -> 10, + + Sequence@@Map[#[[1]] -> IfThen[f > 10.^-12, #[[2]], #[[1]]] &, + {Z -> tau + Den + pBar, Ssq -> S[li] S[lj] Euc[ui,uj], vsq -> Ssq/Z^2, @@ -121,8 +124,7 @@ eulerCons = f -> pEOS - pBar, cs -> Sqrt[gamma (gamma-1) epsi/h], df -> vsq cs^2 - 1, - pBar -> pBar - f/df}, - {i, 1, 5}], + pBar -> pBar - f/df}], (* end of loop *) diff --git a/Examples/kranc.th b/Examples/kranc.th index aa6905a..05eff76 100644 --- a/Examples/kranc.th +++ b/Examples/kranc.th @@ -22,10 +22,10 @@ CactusBase/Boundary CactusBase/CartGrid3D CactusBase/CoordBase CactusBase/Fortran -CactusBase/IOBasic +# CactusBase/IOBasic CactusBase/IOUtil CactusBase/InitBase -CactusBase/LocalInterp +#CactusBase/LocalInterp CactusBase/SymBase CactusBase/Time @@ -63,7 +63,13 @@ Carpet/LoopControl # Kranc support thorn KrancHydroNumericalTools/GenericFD -KrancHydroExamples/Euler -KrancHydroExamples/EulerAuto -KrancHydroExamples/Advect -KrancHydroExamples/Burgers +# KrancHydroExamples/Euler +# KrancHydroExamples/EulerAuto +KrancHydroExamples/EulerSR +# KrancHydroExamples/Advect +# KrancHydroExamples/Burgers + +Carpet/CarpetIOHDF5 +ExternalLibraries/HDF5 +ExternalLibraries/zlib +CactusUtils/TimerReport diff --git a/Tools/CodeGen/ConservationCalculation.m b/Tools/CodeGen/ConservationCalculation.m index fc7af04..9e5ac3f 100644 --- a/Tools/CodeGen/ConservationCalculation.m +++ b/Tools/CodeGen/ConservationCalculation.m @@ -89,23 +89,27 @@ consVars[calc_] := (* Return the list of variables to reconstruct in a calculation *) primitiveVars[calc_] := - Module[{allGFs, calcSyms, gfsUsed, conserved, primitive}, - allGFs = allGroupVariables[lookup[calc, Groups]]; - calcSyms = calculationSymbols[calc]; - gfsUsed = Intersection[allGFs, calcSyms]; - conserved = consVars[calc]; - primitive = Complement[gfsUsed, conserved]; - primitive]; + lookup[calc, Primitives]; + + (* Module[{allGFs, calcSyms, gfsUsed, conserved, primitive}, *) + (* allGFs = allGroupVariables[lookup[calc, Groups]]; *) + (* calcSyms = calculationSymbols[calc]; *) + (* gfsUsed = Intersection[allGFs, calcSyms]; *) + (* conserved = consVars[calc]; *) + (* primitive = Complement[gfsUsed, conserved]; *) + (* primitive]; *) (* Return the variables for which Left and Right GFs need to be created *) lrGFs[calc_] := - Module[{allGFs, calcSyms, gfsUsed, conserved, primitive}, - allGFs = allGroupVariables[lookup[calc, Groups]]; - calcSyms = calculationSymbols[calc]; - gfsUsed = Intersection[allGFs, calcSyms]; - conserved = consVars[calc]; - primitive = Complement[gfsUsed, conserved]; - Join[primitive, conserved]]; + Join[primitiveVars[calc], consVars[calc]]; + + (* Module[{allGFs, calcSyms, gfsUsed, conserved, primitive}, *) + (* allGFs = allGroupVariables[lookup[calc, Groups]]; *) + (* calcSyms = calculationSymbols[calc]; *) + (* gfsUsed = Intersection[allGFs, calcSyms]; *) + (* conserved = consVars[calc]; *) + (* primitive = Complement[gfsUsed, conserved]; *) + (* Join[primitive, conserved]]; *) reconstructCalc[calc_, i_] := { @@ -162,14 +166,16 @@ primitivesCalc[calc_, thornName_] := { Name -> lookup[calc, Name] <> "_primitives", Schedule -> {"in MoL_PostStep after " <> thornName <>"_ApplyBCs"}, - Equations -> lookup[calc, PrimitiveEquations] + Equations -> lookup[calc, PrimitiveEquations], + Shorthands -> lookup[calc, Shorthands] }; conservedCalc[calc_] := { Name -> lookup[calc, Name] <> "_conserved", Schedule -> {"at POSTINITIAL"}, - Equations -> lookup[calc, ConservedEquations] + Equations -> lookup[calc, ConservedEquations], + Shorthands -> lookup[calc, Shorthands] }; conservedIntercellCalc[calc_, i_] := @@ -177,6 +183,7 @@ conservedIntercellCalc[calc_, i_] := Name -> lookup[calc, Name] <> "_intercell_conserved_" <> ToString[i], Schedule -> {"in MoL_CalcRHS after " <> lookup[calc, Name] <> "_reconstruct_" <> ToString[i]}, + Shorthands -> lookup[calc, Shorthands], Equations -> Module[{vars = Join[primitiveVars[calc], consVars[calc]]}, Join[lookup[calc, ConservedEquations] /. (Map[# -> leftSymbol[#] &, vars]), diff --git a/Tools/CodeGen/Kranc.m b/Tools/CodeGen/Kranc.m index d09031d..2224d18 100644 --- a/Tools/CodeGen/Kranc.m +++ b/Tools/CodeGen/Kranc.m @@ -85,7 +85,7 @@ Contents, ThornName, BaseImplementation, EvolvedGFs, PrimitiveGFs, Groups, Calculation, GridFunctions, Shorthands, Equations, Parameter, Value, UsesFunctions, ArgString, Conditional, Conditionals, D1, D2, D3, D11, D22, D33, D21, D31, D32, Textual, TriggerGroups, Include, RHSGroups, Tags, -Steerable, Never, Always, Recover}; +Steerable, Never, Always, Recover, Primitives}; {ExcisionGFs}; diff --git a/Tools/CodeGen/KrancThorn.m b/Tools/CodeGen/KrancThorn.m index c2e1289..d41fb51 100644 --- a/Tools/CodeGen/KrancThorn.m +++ b/Tools/CodeGen/KrancThorn.m @@ -343,6 +343,8 @@ CreateKrancThornTT[groups_, parentDirectory_, thornName_, opts___] := expCalcs = Map[makeCalculationExplicit, calcs]; expConsCalcs = Map[makeCalculationExplicit, consCalcs]; + Print[expConsCalcs]; + InfoMessage[Info, "Group definitions:", groups]; expDerivs = Flatten[Map[MakeExplicit,derivs],1]; @@ -378,7 +380,8 @@ makeCalculationExplicit[calc_] := CollectList -> MakeExplicit, Equations -> MakeExplicit, PrimitiveEquations -> MakeExplicit, - ConservedEquations -> MakeExplicit}]; + ConservedEquations -> MakeExplicit, + Primitives -> MakeExplicit}]; makeGroupExplicit[g_] := Module[{variables, newVariables, newGroup}, -- cgit v1.2.3 From 65be468ae2b5bd42c6eb5f9fcf27bc5c7b33c6dc Mon Sep 17 00:00:00 2001 From: Ian Hinder Date: Sat, 4 Jun 2011 12:03:13 +0200 Subject: MathematicaCompat.h: Fix merge error --- .../KrancNumericalTools/GenericFD/src/MathematicaCompat.h | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'Auxiliary/Cactus') diff --git a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h index e48daa2..18cbb7e 100644 --- a/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h +++ b/Auxiliary/Cactus/KrancNumericalTools/GenericFD/src/MathematicaCompat.h @@ -17,9 +17,11 @@ #endif #ifdef KRANC_C -#define Sign(x) (signbit(x)?-1:+1) +# define Sign(x) (copysign(1.0,(x))) +# define ToReal(x) ((CCTK_REAL)(x)) #else -#define Sign(x) (sgn(x)) +# define Sign(x) (sgn(x)) +# define ToReal(x) (real((x),kind(khalf))) #endif #define MinMod(x, y) ((x) * (y) < 0 ? 0 : (fabs((x)) < fabs((y)) ? (x) : (y))) @@ -41,13 +43,6 @@ #define Cosh(x) (cosh(x)) #define Tanh(x) (tanh(x)) -#ifdef KRANC_C -# define Sign(x) (copysign(1.0,(x))) -# define ToReal(x) ((CCTK_REAL)(x)) -#else -# define Sign(x) (sgn(x)) -# define ToReal(x) (real((x),kind(khalf))) -#endif #if 0 -- cgit v1.2.3