diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2013-09-09 11:58:36 +0200 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2013-09-09 11:58:36 +0200 |
commit | 1f1fd9f2f2f2034f12a352d88162b516974d4dc7 (patch) | |
tree | 021b478a467acb6314daa08da1e8e80e057a4bae /Tools/CodeGen/Thorn.m | |
parent | 5db8952a3b94eb25a35b200596189ad2696e874a (diff) |
Thorn.m: Move characteristic multipatch file generation to new CharacteristicMultipatch.m
This code is currently unused, and hence untested.
Diffstat (limited to 'Tools/CodeGen/Thorn.m')
-rw-r--r-- | Tools/CodeGen/Thorn.m | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/Tools/CodeGen/Thorn.m b/Tools/CodeGen/Thorn.m index 95c296d..c6c2f0a 100644 --- a/Tools/CodeGen/Thorn.m +++ b/Tools/CodeGen/Thorn.m @@ -32,7 +32,6 @@ BeginPackage["Thorn`", "CodeGen`", "CodeGenC`", "CodeGenCactus`", "CodeGenKranc` CreateThorn::usage = "Create a general Cactus thorn from a thorn specification structure"; CreateSetterSource::usage = ""; -CreateMPCharSource::usage = ""; CreatePrecompMacros::usage = ""; CreateStartupFile::usage = ""; @@ -111,253 +110,6 @@ CreateSetterSource[calcs_, debug_, include_, CreateCalculationFunction[calc, opts]}]; -(* ------------------------------------------------------------------------ *) -(* set Characteristic Info for MultiPatch *) -(* ------------------------------------------------------------------------ *) - -(* boundaries spec = {TO BE DEFINED} *) - -charInfoFunction[type_, spec_, debug_]:= Module[{funcName, argString, headerComment1, headerComment2, - thornName, gfs, rhs, groups, tmp, lang, numvars, tab}, - - gfs = Map[ToString, lookup[spec, EvolvedGFs]]; - rhs = Map[AddSuffix[#, "rhs"]&, gfs]; - - Print["createCharInfoFunction with type:\n", type]; - - thornName = lookup[spec, Name]; - - numvars = Length@gfs; - - groups = Map[unqualifiedGroupName, lookup[spec, Groups]]; - - tab = "\t\t\t"; - -If[type == "P2C", - - funcName = lookup[spec,Name] <> "_MultiPatch_Prim2Char"; - argString = "const CCTK_POINTER_TO_CONST cctkGH_,\n" <> - tab <> "const CCTK_INT dir,\n" <> - tab <> "const CCTK_INT face,\n" <> - tab <> "const CCTK_REAL* restrict const base,\n" <> - tab <> "const CCTK_INT* restrict const off,\n" <> - tab <> "const CCTK_INT* restrict const len,\n" <> - tab <> "const CCTK_INT rhs_flag,\n" <> - tab <> "const CCTK_INT num_modes,\n" <> - tab <> "const CCTK_POINTER* restrict const modes,\n" <> - tab <> "const CCTK_POINTER* restrict const speeds"; - - headerComment1 = "/* translate from primary to characteristic variables */\n"; - headerComment2 = "/* Output: */\n" <> - "/* CCTK_POINTER ARRAY IN modes ... array if char. vars */\n" <> - "/* CCTK_POINTER ARRAY IN speeds ... array of char. speeds */\n\n"; -]; - - -If[type == "C2P", - - funcName = lookup[spec,Name] <> "_MultiPatch_Char2Prim"; - argString = "const CCTK_POINTER_TO_CONST cctkGH_,\n" <> - tab <> "const CCTK_INT dir,\n" <> - tab <> "const CCTK_INT face,\n" <> - tab <> "const CCTK_REAL* restrict const base,\n" <> - tab <> "const CCTK_INT* restrict const off,\n" <> - tab <> "const CCTK_INT* restrict const len,\n" <> - tab <> "const CCTK_INT rhs_flag,\n" <> - tab <> "const CCTK_INT num_modes,\n" <> - tab <> "const CCTK_POINTER_TO_CONST* restrict const modes"; - - headerComment1 = "/* translate from characteristic to primary variables */\n"; - headerComment2 = "/* Output: */\n" <> - "/* CCTK_POINTER ARRAY IN modes ... array of char. vars */\n\n"; -]; - - - - -code = { - -DefineFunction[funcName, "CCTK_INT", argString, - -{headerComment1, -"/* Input: */\n", -"/* CCTK_POINTER_TO_CONST cctkGH ... CCTK grid hierarchy */\n", -"/* CCTK_INT dir ... */\n", -"/* CCTK_INT face ... */\n", -"/* CCTK_REAL ARRAY base ... */\n", -"/* CCTK_INT ARRAY lbnd ... */\n", -"/* CCTK_INT ARRAY lsh ... */\n", -"/* CCTK_INT ARRAY from ... */\n", -"/* CCTK_INT ARRAY to ... */\n", -"/* CCTK_INT rhs_flag ... */\n", -"/* CCTK_INT num_modes... */\n", -headerComment2, -"{\n", -" const cGH* restrict const cctkGH = cctkGH_;\n", -" DECLARE_CCTK_ARGUMENTS;\n", -" DECLARE_CCTK_PARAMETERS;\n\n", - -" const CCTK_REAL* restrict prims[" <> ToString@numvars <> "];\n", -" CCTK_REAL * restrict chars[" <> ToString@numvars <> "];\n", -" CCTK_REAL * restrict cspeeds[" <> ToString@numvars <> "];\n", - -" CCTK_REAL normal[3], normal_base[3];\n", -" CCTK_REAL tangent[2][3];\n", - - (* " CCTK_REAL gama[3][3], gamau[3][3], beta[3], alfa;\n", *) -" CCTK_REAL lambda[" <> ToString@numvars <> "];\n", - -" CCTK_REAL xform[" <> ToString@numvars <> "][" <> ToString@numvars <> "];\n", -" CCTK_REAL norm_normal;\n", -" CCTK_REAL norm_tangent[2];\n", - -" int n, m; /* mode */\n", -" int i, j, k; /* grid point indices */\n", -" int d, e; /* dimension */\n\n", - -" /* Check arguments */\n", -" assert (cctkGH);\n", -" assert (cctk_dim == 3);\n", -" assert (dir >= 0 && dir < cctk_dim);\n", -" assert (face >= 0 && face < 2);\n", -" assert (base);\n", -" assert (off);\n", -" assert (len);\n\n", - -" for (d = 0; d < 3; ++d) {\n", -" assert (off[d] >= 0 && len[d] >= 0 && off[d] + len[d] <= cctk_lsh[d]);\n", -" }\n\n", - -" assert (modes);\n", -" assert (speeds);\n", - -" for (d = 0; d < 3; ++d) {\n", -" normal_base[d] = base[d];\n", -" tangent[ 0][d] = base[ cctk_dim+d];\n", -" tangent[ 1][d] = base[2*cctk_dim+d];\n", -" }\n\n", - -" {\n", -" CCTK_REAL normal_length = 0;\n", -" for (d = 0; d < 3; ++d) {\n", -" normal_length += fabs(normal_base[d]);\n", -" }\n", -" assert (normal_length > 0);\n", -" }\n\n", - -" assert (num_modes == " <> ToString@numvars <> ");\n", - -" for (n = 0; n < num_modes; ++n) {\n", -" assert (modes[n]);\n", -" }\n\n", - -" /* Get variable pointers */\n", -" if (rhs_flag) {\n", -Table[" rhs[" <> ToString[i-1] <> "] = CCTK_VarIndex(\"" <> ToString@rhs[[i]] <> "\");\n", - {i, 1, numvars}], -" } else {\n", -Table[" prim[" <> ToString[i-1] <> "] = CCTK_VarIndex(\"" <> gfs[[i]] <> "\");\n", - {i, 1, numvars}], -" }\n\n", -" for (n = 0; n < num_vars ; ++n) {\n", -" chars[ n] = modes[ n];\n", -" cspeeds[n] = speeds[n];\n", -" }\n\n", -"/* compute characteristic variables and speeds */\n", - - - - - -" /* Return 0 for Success! */\n", -" return 0;\n"}] -(* this was it, let`s go for a beer *) -}; - -code]; - -CreateMPCharSource[spec_, debug_] := - - Module[{thornName, gfs, rhs, groups, tmp, lang, numvars}, - - gfs = Map[ToString, lookup[spec, EvolvedGFs]]; - rhs = Map[AddSuffix[#, "rhs"]&, gfs]; - - Print["CreateMPCharSource uses RHS GFs:\n", rhs]; - - thornName = lookup[spec, Name]; - - numvars = Length@gfs; - - groups = Map[unqualifiedGroupName, lookup[spec, Groups]]; - - lang = CodeGenC`SOURCELANGUAGE; - CodeGenC`SOURCELANGUAGE = "C"; - - tmp = {FileHeader["C"], - - - Map[IncludeFile, - {"cctk.h", "cctk_Arguments.h", "cctk_Parameters.h"}], - Map[IncludeSystemFile, - {"assert.h", "math.h"}], - -(* declare lapack function DGESV: compute solution to system of linear equations E * X = B *) -{"\n/* declare lapack function DGESV for solving linear systems */\n", -"void CCTK_FCALL\n", -"CCTK_FNAME(dgesv) (const int* n,\n", -" const int* nrhs,\n", -" double * a,\n", -" const int* lda,\n", -" int * ipiv,\n", -" double * b,\n", -" const int* ldb,\n", -" int * info);\n\n\n"}, - -DefineFunction[lookup[spec,Name] <> "_MultiPatch_SystemDescription", "CCTK_INT", - "const CCTK_POINTER_TO_CONST cctkGH_, const CCTK_INT nvars,\n" <> - " CCTK_INT* restrict const prim, CCTK_INT* restrict const rhs,\n" <> - " CCTK_REAL* restrict const sigma", - -{ -"/* this function is called twice: */\n", -"/* first to set the number of modes, then to set the rest of the information */\n", -" const cGH* restrict const cctkGH = cctkGH_;\n", -" DECLARE_CCTK_PARAMETERS;\n\n", -" int n;\n\n", -" /* Check arguments */\n", -" assert (cctkGH);\n", -" assert (nvars >= 0);\n\n", -" /* Fill in return values on second call */\n", -" if (nvars == " <> ToString@numvars <> ") {\n", -" assert (prim);\n\n", -Table[" prim[" <> ToString[i-1] <> "] = CCTK_VarIndex(\"" <> gfs[[i]] <> "\");\n", {i,1,numvars}], -"\n", -" for (n = 0; n < " <> ToString@numvars <> "; ++n) {\n", -" assert (prim[n] >= 0);\n", -" }\n\n", -" assert (rhs);\n\n", -Table[" rhs[" <> ToString[i-1] <> "] = CCTK_VarIndex(\"" <> ToString@rhs[[i]] <> "\");\n", {i,1,numvars}], -"\n", -" for (n = 0; n < " <> ToString@numvars <> "; ++n) {\n", -" assert (rhs[n] >= 0);\n", -" }\n\n", -" }\n\n", -" /* Coefficient for the scalar product via SummationByParts Thorn */\n", -" *sigma = GetScalProdCoeff();\n\n", -" /* Return the number of modes -- needed at first call! */\n", -" return " <> ToString@numvars <> ";\n"}], - -(* *) -charInfoFunction["P2C", spec, debug], "\n\n", -charInfoFunction["C2P", spec, debug], "\n\n", -charInfoFunction["WHATEVER", spec, debug] -}; - -CodeGenC`SOURCELANGUAGE = lang; -tmp -]; - (* -------------------------------------------------------------------------- Precompmacros |