1 // GetDP - Copyright (C) 1997-2021 P. Dular and C. Geuzaine, University of Liege 2 // 3 // See the LICENSE.txt file for license information. Please report all 4 // issues on https://gitlab.onelab.info/getdp/getdp/issues. 5 6 #ifndef PRO_DEFINES_H 7 #define PRO_DEFINES_H 8 9 #include "GetDPConfig.h" 10 #include "ProDefine.h" 11 12 #if defined(HAVE_KERNEL) 13 #include "Gauss.h" 14 #endif 15 16 #include "F.h" 17 #include "BF.h" 18 #include "GF.h" 19 #include "Cal_Value.h" 20 extern struct CurrentData Current; 21 22 struct StringXDefine Mesh_Format[] = { 23 {"gmsh" , FORMAT_GMSH}, {"Gmsh" , FORMAT_GMSH}, 24 {NULL , FORMAT_GMSH} 25 } ; 26 27 struct StringXDefine Field_Type[] = { 28 {"Form0" , FORM0 }, {"Form1" , FORM1 }, {"Form2" , FORM2 }, {"Form3" , FORM3 }, 29 {"Form0P" , FORM0P}, {"Form1P" , FORM1P}, {"Form2P" , FORM2P }, {"Form3P" , FORM3P}, 30 {"Form0S" , FORM0S}, {"Form1S" , FORM1S}, {"Form2S" , FORM2S }, {"Form3S" , FORM3S}, 31 {"Scalar" , SCALAR}, {"Vector" , VECTOR}, {"VectorP" , VECTORP}, 32 {"Tensor" , TENSOR}, {"TensorSym" , TENSOR_SYM}, {"TensorDiag" , TENSOR_DIAG}, 33 {NULL , FORM0} 34 } ; 35 36 struct StringXDefine FunctionForGroup_Type[] = { 37 {"Region" , REGION}, 38 {"Global" , GLOBAL}, 39 {"NodesOf" , NODESOF}, 40 {"EdgesOf" , EDGESOF}, 41 {"FacetsOf" , FACETSOF}, 42 {"VolumesOf" , VOLUMESOF}, 43 {"ElementsOf" , ELEMENTSOF}, 44 {"GroupsOfNodesOf" , GROUPSOFNODESOF}, 45 {"GroupsOfEdgesOnNodesOf" , GROUPSOFEDGESONNODESOF}, 46 {"GroupsOfEdgesOf" , GROUPSOFEDGESOF}, 47 {"GroupsOfFacetsOf" , GROUPSOFFACETSOF}, 48 {"GroupOfRegionsOf" , GROUPOFREGIONSOF}, 49 {"EdgesOfTreeIn" , EDGESOFTREEIN}, 50 {"FacetsOfTreeIn" , FACETSOFTREEIN}, 51 {"DualNodesOf" , DUALNODESOF}, 52 {"DualEdgesOf" , DUALEDGESOF}, 53 {"DualFacetsOf" , DUALFACETSOF}, 54 {"DualVolumesOf" , DUALVOLUMESOF}, 55 {"BoundaryOfDualNodesOf" , BOUNDARYOFDUALNODESOF}, 56 {"BoundaryOfDualEdgesOf" , BOUNDARYOFDUALEDGESOF}, 57 {"BoundaryOfDualFacetsOf" , BOUNDARYOFDUALFACETSOF}, 58 {"MovingBand2D" , MOVINGBAND2D}, 59 {NULL , 0} 60 } ; 61 62 struct StringXDefine FunctionForGroup_SuppList[] = { 63 {"Not" , SUPPLIST_NOT}, 64 {"StartingOn" , SUPPLIST_STARTINGON}, 65 {"OnOneSideOf" , SUPPLIST_ONONESIDEOF}, 66 {"OnPositiveSideOf", SUPPLIST_ONPOSITIVESIDEOF}, 67 {"OnNegativeSideOf", SUPPLIST_ONNEGATIVESIDEOF}, 68 {"InSupport" , SUPPLIST_INSUPPORT}, 69 {"ConnectedTo" , SUPPLIST_CONNECTEDTO}, 70 {"DisjointOf" , SUPPLIST_DISJOINTOF}, 71 {NULL , 0} 72 } ; 73 74 struct StringXDefine1Nbr Jacobian_Type[] = { 75 {"Vol" , JACOBIAN_VOL , 0} , 76 {"VolSphShell" , JACOBIAN_VOL_SPH_SHELL , -1} , 77 {"VolCylShell" , JACOBIAN_VOL_CYL_SHELL , -1} , 78 {"VolRectShell" , JACOBIAN_VOL_RECT_SHELL , -1} , 79 {"VolUniDirShell" , JACOBIAN_VOL_UNI_DIR_SHELL , -1} , 80 {"VolPlpdX" , JACOBIAN_VOL_PLPD_X , 2} , 81 82 {"VolAxi" , JACOBIAN_VOL_AXI , 0} , 83 {"VolAxiSphShell" , JACOBIAN_VOL_AXI_SPH_SHELL , -1} , 84 {"VolAxiRectShell" , JACOBIAN_VOL_AXI_RECT_SHELL , -1} , 85 {"VolAxiPlpdX" , JACOBIAN_VOL_AXI_PLPD_X , 2} , 86 87 {"VolAxiSqu" , JACOBIAN_VOL_AXI_SQU , 0} , 88 {"VolAxiSquSphShell" , JACOBIAN_VOL_AXI_SQU_SPH_SHELL , -1} , 89 {"VolAxiSquRectShell", JACOBIAN_VOL_AXI_SQU_RECT_SHELL, -1} , 90 91 {"Sur" , JACOBIAN_SUR , 0} , 92 {"SurSphShell" , JACOBIAN_SUR_SPH_SHELL , -1} , 93 {"SurRectShell" , JACOBIAN_SUR_RECT_SHELL , -1} , 94 95 {"SurAxi" , JACOBIAN_SUR_AXI , 0} , 96 97 {"Lin" , JACOBIAN_LIN , 0} , 98 {NULL , JACOBIAN_VOL , 0} 99 } ; 100 101 struct StringXDefine Integration_Type[] = { 102 {"Gauss" , GAUSS}, 103 {"GaussLegendre" , GAUSSLEGENDRE}, 104 {"Analytic" , ANALYTIC}, 105 {NULL , GAUSS} 106 } ; 107 108 struct StringXDefine Integration_SubType[] = { 109 {"Standard" , STANDARD}, 110 {"Singular" , SINGULAR}, 111 {"Adaptative" , ADAPTATIVE}, 112 {NULL , STANDARD} 113 } ; 114 115 struct StringXDefine Element_Type[] = { 116 {"Point" , POINT_ELEMENT}, 117 {"Line" , LINE}, 118 {"Line2" , LINE_2}, 119 {"Line3" , LINE_3}, 120 {"Line4" , LINE_4}, 121 {"Triangle" , TRIANGLE}, 122 {"Triangle2" , TRIANGLE_2}, 123 {"Triangle3" , TRIANGLE_3}, 124 {"Triangle4" , TRIANGLE_4}, 125 {"Quadrangle" , QUADRANGLE}, 126 {"Quadrangle2" , QUADRANGLE_2}, 127 {"Quadrangle2_8N" , QUADRANGLE_2_8N}, 128 {"Quadrangle3" , QUADRANGLE_3}, 129 {"Quadrangle4" , QUADRANGLE_4}, 130 {"Tetrahedron" , TETRAHEDRON}, 131 {"Tetrahedron2" , TETRAHEDRON_2}, 132 {"Tetrahedron3" , TETRAHEDRON_3}, 133 {"Tetrahedron4" , TETRAHEDRON_4}, 134 {"Hexahedron" , HEXAHEDRON}, 135 {"Hexahedron2" , HEXAHEDRON_2}, 136 {"Hexahedron2_20N", HEXAHEDRON_2_20N}, 137 {"Hexahedron3" , HEXAHEDRON_3}, 138 {"Hexahedron4" , HEXAHEDRON_4}, 139 {"Prism" , PRISM}, 140 {"Prism2" , PRISM_2}, 141 {"Prism2_15N" , PRISM_2_15N}, 142 {"Prism3" , PRISM_3}, 143 {"Prism4" , PRISM_4}, 144 {"Pyramid" , PYRAMID}, 145 {"Pyramid2" , PYRAMID_2}, 146 {"Pyramid2_13N" , PYRAMID_2_13N}, 147 {"Pyramid3" , PYRAMID_3}, 148 //{"Pyramid4" , PYRAMID_4}, 149 {NULL , TRIANGLE} 150 } ; 151 152 struct StringXDefine GlobalQuantity_Type[] = { 153 {"AliasOf" , ALIASOF}, 154 {"AssociatedWith" , ASSOCIATEDWITH}, 155 {NULL , ALIASOF} 156 } ; 157 158 struct StringXDefine Constraint_Type[] = { 159 {"Assign" , ASSIGN}, 160 {"Init" , INIT}, 161 {"AssignFromResolution" , ASSIGNFROMRESOLUTION}, 162 {"InitFromResolution" , INITFROMRESOLUTION}, 163 {"Network" , NETWORK}, 164 {"Link" , CST_LINK}, 165 {"LinkCplx" , CST_LINKCPLX}, 166 {NULL , ASSIGN} 167 } ; 168 169 struct StringXDefine Formulation_Type[] = { 170 {"FemEquation" , FEMEQUATION}, 171 {"BemEquation" , BEMEQUATION}, 172 {"GlobalEquation" , GLOBALEQUATION}, 173 {NULL , FEMEQUATION} 174 } ; 175 176 struct StringXDefine Equation_SubType[] = { 177 {"Self" , EQ_ST_SELF}, 178 {"Mutual" , EQ_ST_MUTUAL}, 179 {"SelfAndMutual" , EQ_ST_SELFANDMUTUAL}, 180 {"MutualAndSelf" , EQ_ST_SELFANDMUTUAL}, 181 {NULL , EQ_ST_SELF} 182 } ; 183 184 struct StringXDefine DefineQuantity_Type[] = { 185 /* a supprimer */ 186 {"LocalQuantity" , LOCALQUANTITY}, 187 {"GlobalQuantity" , GLOBALQUANTITY}, 188 {"IntegralQuantity" , INTEGRALQUANTITY}, 189 190 {"Local" , LOCALQUANTITY}, 191 {"Global" , GLOBALQUANTITY}, 192 {"Integral" , INTEGRALQUANTITY}, 193 {NULL , LOCALQUANTITY} 194 } ; 195 196 struct StringXDefine Operator_Type[] = { 197 {"NoOp" , NOOP } , 198 {"d" , EXTDER } , {"dInv" , EXTDERINV} , 199 {"Grad" , GRAD } , {"GradInv" , GRADINV } , 200 {"Curl" , CURL } , {"CurlInv" , CURLINV } , 201 {"Rot" , CURL } , {"RotInv" , CURLINV } , 202 {"Div" , DIV } , {"DivInv" , DIVINV } , 203 204 // unused 205 {"NSx" , NSx } , 206 {"NSxd" , NSxEXTDER} , 207 {"NSxGrad" , NSxGRAD } , 208 {"NPxGrad" , NPxGRAD } , 209 210 {"D1" , OP_D1 } , 211 {"D2" , OP_D2 } , 212 {"D3" , OP_D3 } , 213 214 {NULL , NOOP } 215 } ; 216 217 struct StringXDefine QuantityFromFS_Type[] = { 218 {"Dof" , QUANTITY_DOF } , 219 {"BF" , QUANTITY_BF } , 220 {"NoDof" , QUANTITY_NODOF } , 221 {NULL , QUANTITY_SIMPLE } 222 } ; 223 224 struct StringXDefine DefineSystem_Type[] = { 225 {"RealValue" , VAL_REAL}, 226 {"Real" , VAL_REAL}, 227 {"ComplexValue" , VAL_COMPLEX}, 228 {"Complex" , VAL_COMPLEX}, 229 {NULL , VAL_REAL} 230 } ; 231 232 struct StringXDefine Operation_Type[] = { 233 {"Apply" , OPERATION_APPLY}, 234 {"RemoveLastSolution" , OPERATION_REMOVELASTSOLUTION}, 235 {"DofsFrequencySpectrum" , OPERATION_DOFSFREQUENCYSPECTRUM}, 236 {"Generate" , OPERATION_GENERATE}, 237 {"GenerateCumulative" , OPERATION_GENERATE_CUMULATIVE}, 238 {"GenerateJac" , OPERATION_GENERATEJAC}, 239 {"GenerateJacCumulative" , OPERATION_GENERATEJAC_CUMULATIVE}, 240 {"GenerateOnly" , OPERATION_GENERATEONLY}, 241 {"GenerateOnlyJac" , OPERATION_GENERATEONLYJAC}, 242 {"GenerateRHS" , OPERATION_GENERATERHS}, 243 {"GenerateRightHandSide" , OPERATION_GENERATERHS}, 244 {"GenerateRHSCumulative" , OPERATION_GENERATERHS_CUMULATIVE}, 245 {"GenerateRightHandSideCumulative" , OPERATION_GENERATERHS_CUMULATIVE}, 246 {"GenerateSeparate" , OPERATION_GENERATESEPARATE}, 247 {"InitCorrection" , OPERATION_INITCORRECTION}, 248 {"InitSolution" , OPERATION_INITSOLUTION}, 249 {"InitSolution1" , OPERATION_INITSOLUTION1}, 250 {"ReadSolution" , OPERATION_READSOLUTION}, 251 {"SaveSolution" , OPERATION_SAVESOLUTION}, 252 {"SaveSolutionExtendedMH" , OPERATION_SAVESOLUTIONEXTENDEDMH}, 253 {"SaveSolutions" , OPERATION_SAVESOLUTIONS}, 254 {"SetCurrentSystem" , OPERATION_SETCURRENTSYSTEM}, 255 {"SetRHSAsSolution" , OPERATION_SETRHSASSOLUTION}, 256 {"SetRightHandSideAsSolution" , OPERATION_SETRHSASSOLUTION}, 257 {"SetSolutionAsRHS" , OPERATION_SETSOLUTIONASRHS}, 258 {"SetSolutionAsRightHandSide", OPERATION_SETSOLUTIONASRHS}, 259 {"SetIncrementAsSolution" , OPERATION_SETINCREMENTASSOLUTION}, 260 {"SwapSolutionAndRHS" , OPERATION_SWAPSOLUTIONANDRHS}, 261 {"SwapSolutionAndRightHandSide" , OPERATION_SWAPSOLUTIONANDRHS}, 262 {"SwapSolutionAndResidual", OPERATION_SWAPSOLUTIONANDRESIDUAL}, 263 {"Solve" , OPERATION_SOLVE}, 264 {"SolveAgain" , OPERATION_SOLVEAGAIN}, 265 {"SolveJac" , OPERATION_SOLVEJAC}, 266 {"SolveJacAgain" , OPERATION_SOLVEJACAGAIN}, 267 {"SolveJac_AdaptRelax" , OPERATION_SOLVEJACADAPTRELAX}, 268 {"SolveNL" , OPERATION_SOLVENL}, 269 {"HPDDMSolve" , OPERATION_HPDDMSOLVE}, 270 {"TransferSolution" , OPERATION_TRANSFERSOLUTION}, 271 {"Update" , OPERATION_UPDATE}, 272 {"Debug" , OPERATION_DEBUG}, 273 {NULL , OPERATION_NONE} 274 } ; 275 276 struct StringXDefine ChangeOfState_Type[] = { 277 {"ChangeSign" , CHANGEOFSTATE_CHANGESIGN}, 278 {"ChangeLevel" , CHANGEOFSTATE_CHANGELEVEL}, 279 {"ChangeReference" , CHANGEOFSTATE_CHANGEREFERENCE}, 280 {"ChangeReference2" , CHANGEOFSTATE_CHANGEREFERENCE2}, 281 {NULL , CHANGEOFSTATE_CHANGESIGN} 282 } ; 283 284 struct StringXDefine ErrorNorm_Type[] = { 285 {"LinfNorm" , LINFNORM}, 286 {"L1Norm" , L1NORM}, 287 {"MeanL1Norm" , MEANL1NORM}, 288 {"L2Norm" , L2NORM}, 289 {"MeanL2Norm" , MEANL2NORM}, 290 {NULL , LINFNORM} 291 } ; 292 293 struct StringXDefine NormOf_Type[] = { 294 {"Solution" , SOLUTION}, 295 {"Residual" , RESIDUAL}, 296 {"RecalcResidual" , RECALCRESIDUAL}, 297 {NULL , SOLUTION} 298 } ; 299 300 struct StringXPointer Current_Value[] = { 301 {"Time" , &Current.Time}, {"DTime" , &Current.DTime}, 302 {"Theta" , &Current.Theta}, {"TimeStep" , &Current.TimeStep}, 303 {"Iter" , &Current.Iteration}, 304 {"Iteration", &Current.Iteration}, {"NLIteration", &Current.Iteration}, 305 {"Residual" , &Current.Residual}, {"NLResidual" , &Current.Residual}, 306 {"RelaxFac" , &Current.RelaxFac}, //+++ 307 {"ResidualN" , &Current.ResidualN}, //+++ 308 {"Residual_Iter1" , &Current.Residual_Iter1}, //+++ 309 {"NbrTestedFac" , &Current.NbrTestedFac}, //+++ 310 {"SolveJacAdaptFailed" , &Current.SolveJacAdaptFailed}, //+++ 311 {"TimeImag" , &Current.TimeImag}, {"Eigenvalue", &Current.Time}, 312 {"EigenvalueReal" , &Current.Time}, {"EigenvalueImag" , &Current.TimeImag}, 313 {"ReOmega" , &Current.Time}, {"ImOmega" , &Current.TimeImag}, 314 {"wr" , &Current.Time}, {"wi" , &Current.TimeImag}, 315 {"Breakpoint", &Current.Breakpoint}, 316 317 {"X" , &Current.x}, {"Y" , &Current.y}, {"Z" , &Current.z}, 318 {"XS" , &Current.xs},{"YS" , &Current.ys}, {"ZS" , &Current.zs}, 319 {"XP" , &Current.xp},{"YP" , &Current.yp}, {"ZP" , &Current.zp}, 320 321 {"U" , &Current.x}, {"V" , &Current.y}, {"W" , &Current.z}, 322 {"US" , &Current.xs},{"VS" , &Current.ys}, {"WS" , &Current.zs}, 323 324 {"A" , &Current.a} ,{"B" , &Current.b} , {"C" , &Current.c}, 325 326 {"Val0" , &Current.Val[0]}, {"Val1" , &Current.Val[1]}, {"Val2" , &Current.Val[2]}, 327 {"Val3" , &Current.Val[3]}, {"Val4" , &Current.Val[4]}, {"Val5" , &Current.Val[5]}, 328 {"Val6" , &Current.Val[6]}, {"Val7" , &Current.Val[7]}, {"Val8" , &Current.Val[8]}, 329 330 {"QuadraturePointIndex", &Current.QuadraturePointIndex}, 331 {"QP", &Current.QuadraturePointIndex}, 332 333 {"KSPIterations", &Current.KSPIterations}, {"KSPIts", &Current.KSPIterations}, 334 {"KSPIteration", &Current.KSPIteration}, 335 {"KSPResidual", &Current.KSPResidual}, 336 {"KSPSystemSize", &Current.KSPSystemSize}, 337 {NULL , NULL} 338 } ; 339 340 struct StringXDefine PostQuantityTerm_EvaluationType[] = { 341 {"Local" , LOCAL}, 342 {"Term" , LOCAL}, 343 {"Integral" , INTEGRAL}, 344 {NULL , LOCAL} 345 } ; 346 347 struct StringXDefine PostSubOperation_CombinationType[] = { 348 {"*" , MULTIPLICATION}, 349 {"/" , DIVISION}, 350 {"+" , ADDITION}, 351 {"-" , SOUSTRACTION}, 352 {NULL , MULTIPLICATION} 353 } ; 354 355 struct StringXDefine PostSubOperation_Format[] = { 356 {"Table" , FORMAT_SPACE_TABLE }, 357 {"SimpleTable" , FORMAT_SIMPLE_SPACE_TABLE }, 358 {"NodeTable" , FORMAT_NODE_TABLE }, 359 {"ElementTable" , FORMAT_ELEMENT_TABLE }, 360 {"ValueOnly" , FORMAT_VALUE_ONLY }, 361 {"TimeTable" , FORMAT_TIME_TABLE }, 362 {"RegionTable" , FORMAT_REGION_TABLE }, 363 {"RegionValue" , FORMAT_REGION_VALUE }, 364 {"FrequencyRegionValue", FORMAT_FREQUENCY_REGION_VALUE }, 365 {"HarmonicToTimeTable" , FORMAT_TIME_TABLE }, // a supprimer 366 {"FrequencyTable" , FORMAT_FREQUENCY_TABLE }, 367 {"GetDP" , FORMAT_GETDP}, 368 {"Gmsh" , FORMAT_GMSH}, 369 {"GmshParsed" , FORMAT_GMSH_PARSED}, 370 {"Unv" , FORMAT_NXUNV}, 371 {"NX" , FORMAT_NXUNV}, 372 {"Gnuplot" , FORMAT_GNUPLOT }, 373 {"Adaptation" , FORMAT_ADAPT }, 374 {NULL , FORMAT_GMSH } 375 } ; 376 377 struct StringXDefine PostSubOperation_FormatTag[] = { 378 {"Time" , TAG_TIME}, 379 {"TimeStep" , TAG_TIMESTEP}, 380 {"Value" , TAG_VALUE}, 381 {"X" , TAG_X}, 382 {"Y" , TAG_Y}, 383 {"Z" , TAG_Z}, 384 {"Nodes" , TAG_NODES}, 385 {"Type" , TAG_TYPE}, 386 {"Version" , TAG_VERSION}, 387 {"Date" , TAG_DATE}, 388 {"Host" , TAG_HOST}, 389 {"Filename" , TAG_FILENAME}, 390 {"User" , TAG_USER}, 391 {"Abscissa" , TAG_ABSCISSA}, 392 {"Normal" , TAG_NORMAL}, 393 {"Command" , TAG_COMMAND}, 394 {NULL , 0} 395 } ; 396 397 struct StringXDefine PostSubOperation_AdaptationType[] = { 398 {"P1" , ADAPT_P1}, 399 {"H1" , ADAPT_H1}, 400 {"H2" , ADAPT_H2}, 401 {NULL , ADAPT_P1} 402 } ; 403 404 struct StringXDefine PostSubOperation_SortType[] = { 405 {"Position" , SORT_BY_POSITION }, 406 {"Connection" , SORT_BY_CONNECTIVITY }, 407 {NULL , 0 } 408 } ; 409 410 /* ------------------------------------------------------------------------ */ 411 /* Types (int) and their assigned functions */ 412 /* ------------------------------------------------------------------------ */ 413 414 #define CAST void(*)() 415 416 struct DefineXFunction FunctionForGauss[] = { 417 #if defined(HAVE_KERNEL) 418 {POINT_ELEMENT , (CAST)Gauss_Point}, 419 {LINE , (CAST)Gauss_Line}, 420 {LINE_2 , (CAST)Gauss_Line}, 421 {LINE_3 , (CAST)Gauss_Line}, 422 {LINE_4 , (CAST)Gauss_Line}, 423 {TRIANGLE , (CAST)Gauss_Triangle}, 424 {TRIANGLE_2 , (CAST)Gauss_Triangle}, 425 {TRIANGLE_3 , (CAST)Gauss_Triangle}, 426 {TRIANGLE_4 , (CAST)Gauss_Triangle}, 427 {QUADRANGLE , (CAST)Gauss_Quadrangle}, 428 {QUADRANGLE_2 , (CAST)Gauss_Quadrangle}, 429 {QUADRANGLE_2_8N, (CAST)Gauss_Quadrangle}, 430 {QUADRANGLE_3 , (CAST)Gauss_Quadrangle}, 431 {QUADRANGLE_4 , (CAST)Gauss_Quadrangle}, 432 {TETRAHEDRON , (CAST)Gauss_Tetrahedron}, 433 {TETRAHEDRON_2 , (CAST)Gauss_Tetrahedron}, 434 {TETRAHEDRON_3 , (CAST)Gauss_Tetrahedron}, 435 {TETRAHEDRON_4 , (CAST)Gauss_Tetrahedron}, 436 {HEXAHEDRON , (CAST)Gauss_Hexahedron}, 437 {HEXAHEDRON_2 , (CAST)Gauss_Hexahedron}, 438 {HEXAHEDRON_2_20N, (CAST)Gauss_Hexahedron}, 439 {HEXAHEDRON_3 , (CAST)Gauss_Hexahedron}, 440 {HEXAHEDRON_4 , (CAST)Gauss_Hexahedron}, 441 {PRISM , (CAST)Gauss_Prism}, 442 {PRISM_2 , (CAST)Gauss_Prism}, 443 {PRISM_2_15N , (CAST)Gauss_Prism}, 444 {PRISM_3 , (CAST)Gauss_Prism}, 445 {PRISM_4 , (CAST)Gauss_Prism}, 446 {PYRAMID , (CAST)Gauss_Pyramid}, 447 {PYRAMID_2 , (CAST)Gauss_Pyramid}, 448 {PYRAMID_2_13N , (CAST)Gauss_Pyramid}, 449 {PYRAMID_3 , (CAST)Gauss_Pyramid}, 450 //{PYRAMID_4 , (CAST)Gauss_Pyramid}, 451 #else 452 {POINT_ELEMENT , NULL}, 453 {LINE , NULL}, 454 {LINE_2 , NULL}, 455 {LINE_3 , NULL}, 456 {LINE_4 , NULL}, 457 {TRIANGLE , NULL}, 458 {TRIANGLE_2 , NULL}, 459 {TRIANGLE_3 , NULL}, 460 {TRIANGLE_4 , NULL}, 461 {QUADRANGLE , NULL}, 462 {QUADRANGLE_2 , NULL}, 463 {QUADRANGLE_2_8N, NULL}, 464 {QUADRANGLE_3 , NULL}, 465 {QUADRANGLE_4 , NULL}, 466 {TETRAHEDRON , NULL}, 467 {TETRAHEDRON_2 , NULL}, 468 {TETRAHEDRON_3 , NULL}, 469 {TETRAHEDRON_4 , NULL}, 470 {HEXAHEDRON , NULL}, 471 {HEXAHEDRON_2 , NULL}, 472 {HEXAHEDRON_2_20N, NULL}, 473 {HEXAHEDRON_3 , NULL}, 474 {HEXAHEDRON_4 , NULL}, 475 {PRISM , NULL}, 476 {PRISM_2 , NULL}, 477 {PRISM_2_15N , NULL}, 478 {PRISM_3 , NULL}, 479 {PRISM_4 , NULL}, 480 {PYRAMID , NULL}, 481 {PYRAMID_2 , NULL}, 482 {PYRAMID_2_13N , NULL}, 483 {PYRAMID_3 , NULL}, 484 //{PYRAMID_4 , NULL}, 485 #endif 486 {0 , 0} 487 } ; 488 489 struct DefineXFunction FunctionForSingularGauss[] = { 490 #if defined(HAVE_KERNEL) 491 {TRIANGLE , (CAST)GaussSingularR_Triangle}, 492 {QUADRANGLE , (CAST)GaussSingularR_Quadrangle}, 493 #else 494 {TRIANGLE , NULL}, 495 {QUADRANGLE , NULL}, 496 #endif 497 {0 , 0} 498 } ; 499 500 struct DefineXFunction FunctionForGaussLegendre[] = { 501 #if defined(HAVE_KERNEL) 502 {POINT_ELEMENT , (CAST)Gauss_Point}, 503 {LINE , (CAST)Gauss_Line}, 504 {LINE_2 , (CAST)Gauss_Line}, 505 {TRIANGLE , (CAST)GaussLegendre_Triangle}, 506 {TRIANGLE_2 , (CAST)GaussLegendre_Triangle}, 507 {QUADRANGLE , (CAST)GaussLegendre_Quadrangle}, 508 {QUADRANGLE_2 , (CAST)GaussLegendre_Quadrangle}, 509 {TETRAHEDRON , (CAST)GaussLegendre_Tetrahedron}, 510 {TETRAHEDRON_2 , (CAST)GaussLegendre_Tetrahedron}, 511 {HEXAHEDRON , (CAST)GaussLegendre_Hexahedron}, 512 {HEXAHEDRON_2 , (CAST)GaussLegendre_Hexahedron}, 513 {PRISM , (CAST)Gauss_Prism}, 514 {PRISM_2 , (CAST)Gauss_Prism}, 515 {PYRAMID , (CAST)Gauss_Pyramid}, 516 {PYRAMID_2 , (CAST)Gauss_Pyramid}, 517 #else 518 {POINT_ELEMENT , NULL}, 519 {LINE , NULL}, 520 {TRIANGLE , NULL}, 521 {QUADRANGLE , NULL}, 522 {TETRAHEDRON , NULL}, 523 {HEXAHEDRON , NULL}, 524 #endif 525 {0 , 0} 526 } ; 527 528 #define POI POINT_ELEMENT 529 #define LIN LINE | LINE_2 | LINE_3 | LINE_4 530 #define TRI TRIANGLE | TRIANGLE_2 | TRIANGLE_3 | TRIANGLE_4 531 #define QUA QUADRANGLE | QUADRANGLE_2 | QUADRANGLE_2_8N | QUADRANGLE_3 | QUADRANGLE_4 532 #define TET TETRAHEDRON | TETRAHEDRON_2 | TETRAHEDRON_3 | TETRAHEDRON_4 533 #define HEX HEXAHEDRON | HEXAHEDRON_2 | HEXAHEDRON_2_20N | HEXAHEDRON_3 | HEXAHEDRON_4 534 #define PRI PRISM | PRISM_2 | PRISM_2_15N | PRISM_3 | PRISM_4 535 #define PYR PYRAMID | PYRAMID_2 | PYRAMID_2_13N | PYRAMID_3 // | PYRAMID_4 536 #define ALL POI|LIN|TRI|QUA|TET|HEX|PRI|PYR 537 538 struct StringX3Function3Nbr BF_Function[] = { 539 // H^1 Basis Functions and their gradients 540 541 {"BF_Node", (CAST)BF_Node, 542 (CAST)BF_GradNode, (CAST)BF_Zero, 1., ALL, 0 }, 543 {"BF_Node_1N", (CAST)BF_Node, 544 (CAST)BF_GradNode, (CAST)BF_Zero, 1., ALL, 0 }, 545 {"BF_Node_2E", (CAST)BF_Node_2E, 546 (CAST)BF_GradNode_2E, (CAST)BF_Zero, 2., LIN|TRI|TET, 0 }, 547 {"BF_Node_2F", (CAST)BF_Node_2F, 548 (CAST)BF_GradNode_2F, (CAST)BF_Zero, 2., QUA|HEX/*|PRI|PYR*/, 0 }, 549 {"BF_Node_2V", (CAST)BF_Node_2V, 550 (CAST)BF_GradNode_2V, (CAST)BF_Zero, 2., HEX, 0 }, 551 {"BF_Node_3E", (CAST)BF_Node_3E, 552 (CAST)BF_GradNode_3E, (CAST)BF_Zero, 3., ALL, 0 }, 553 {"BF_Node_3F", (CAST)BF_Node_3F, 554 (CAST)BF_GradNode_3F, (CAST)BF_Zero, 3., TRI|QUA|TET|HEX|PRI|PYR, 0 }, 555 {"BF_Node_3V", (CAST)BF_Node_3V, 556 (CAST)BF_GradNode_3V, (CAST)BF_Zero, 3., HEX|PRI|PYR, 0 }, 557 558 {"BF_GradNodeRealCoord", (CAST)BF_GradNodeRealCoord, 559 (CAST)BF_Zero, (CAST)BF_Node, 0., ALL, 0 }, 560 {"BF_GradNode", (CAST)BF_GradNode, 561 (CAST)BF_Zero, (CAST)BF_Node, 0., ALL, 0 }, 562 {"BF_GradNode_1N", (CAST)BF_GradNode, 563 (CAST)BF_Zero, (CAST)BF_Node, 0., ALL, 0 }, 564 {"BF_GradNode_2E", (CAST)BF_GradNode_2E, 565 (CAST)BF_Zero, (CAST)BF_Node_2E, 1., LIN|TRI|TET, 0 }, 566 {"BF_GradNode_2F", (CAST)BF_GradNode_2F, 567 (CAST)BF_Zero, (CAST)BF_Node_2F, 1., QUA|HEX/*|PRI|PYR*/, 0 }, 568 {"BF_GradNode_2V", (CAST)BF_GradNode_2V, 569 (CAST)BF_Zero, (CAST)BF_Node_2V, 1., HEX, 0 }, 570 {"BF_GradNode_3E", (CAST)BF_GradNode_3E, 571 (CAST)BF_Zero, (CAST)BF_Node_3E, 2., ALL, 0 }, 572 {"BF_GradNode_3F", (CAST)BF_GradNode_3F, 573 (CAST)BF_Zero, (CAST)BF_Node_3F, 2., TRI|QUA|TET|HEX|PRI|PYR, 0 }, 574 {"BF_GradNode_3V", (CAST)BF_GradNode_3V, 575 (CAST)BF_Zero, (CAST)BF_Node_3V, 2., HEX|PRI|PYR, 0 }, 576 577 {"BF_GroupOfNodes", (CAST)BF_GroupOfNodes, 578 (CAST)BF_GradGroupOfNodes, (CAST)BF_Zero, 1., ALL, 0 }, 579 {"BF_GroupOfNodes_1N", (CAST)BF_GroupOfNodes, 580 (CAST)BF_GradGroupOfNodes, (CAST)BF_Zero, 1., ALL, 0 }, 581 {"BF_GroupOfNodes_2E", (CAST)BF_GroupOfNodes_2E, 582 (CAST)BF_GradGroupOfNodes_2E, (CAST)BF_Zero, 2., ALL, 0 }, 583 {"BF_GroupOfNodes_2F", (CAST)BF_GroupOfNodes_2F, 584 (CAST)BF_GradGroupOfNodes_2F, (CAST)BF_Zero, 2., QUA|HEX/*|PRI|PYR*/, 0 }, 585 {"BF_GroupOfNodes_2V", (CAST)BF_GroupOfNodes_2V, 586 (CAST)BF_GradGroupOfNodes_2V, (CAST)BF_Zero, 2., HEX, 0 }, 587 {"BF_GroupOfNodes_3E", (CAST)BF_GroupOfNodes_3E, 588 (CAST)BF_GradGroupOfNodes_3E, (CAST)BF_Zero, 3., ALL, 0 }, 589 {"BF_GroupOfNodes_3F", (CAST)BF_GroupOfNodes_3F, 590 (CAST)BF_GradGroupOfNodes_3F, (CAST)BF_Zero, 3., HEX|PRI|TET|HEX|PRI|PYR, 0 }, 591 {"BF_GroupOfNodes_3V", (CAST)BF_GroupOfNodes_3V, 592 (CAST)BF_GradGroupOfNodes_3V, (CAST)BF_Zero, 3., HEX|PRI|PYR, 0 }, 593 594 {"BF_GradGroupOfNodes", (CAST)BF_GradGroupOfNodes, 595 (CAST)BF_Zero, (CAST)BF_GroupOfNodes, 0., ALL, 0 }, 596 {"BF_GradGroupOfNodes_1N", (CAST)BF_GradGroupOfNodes, 597 (CAST)BF_Zero, (CAST)BF_GroupOfNodes, 0., ALL, 0 }, 598 {"BF_GradGroupOfNodes_2E", (CAST)BF_GradGroupOfNodes_2E, 599 (CAST)BF_Zero, (CAST)BF_GroupOfNodes_2E, 1., ALL, 0 }, 600 {"BF_GradGroupOfNodes_2F", (CAST)BF_GradGroupOfNodes_2F, 601 (CAST)BF_Zero, (CAST)BF_GroupOfNodes_2F, 1., QUA|HEX/*|PRI|PYR*/, 0 }, 602 {"BF_GradGroupOfNodes_2V", (CAST)BF_GradGroupOfNodes_2V, 603 (CAST)BF_Zero, (CAST)BF_GroupOfNodes_2V, 1., HEX, 0 }, 604 {"BF_GradGroupOfNodes_3E", (CAST)BF_GradGroupOfNodes_3E, 605 (CAST)BF_Zero, (CAST)BF_GroupOfNodes_3E, 2., ALL, 0 }, 606 {"BF_GradGroupOfNodes_3F", (CAST)BF_GradGroupOfNodes_3F, 607 (CAST)BF_Zero, (CAST)BF_GroupOfNodes_3F, 2., HEX|PRI|TET|HEX|PRI|PYR, 0 }, 608 {"BF_GradGroupOfNodes_3V", (CAST)BF_GradGroupOfNodes_2V, 609 (CAST)BF_Zero, (CAST)BF_GroupOfNodes_3V, 2., HEX|PRI|PYR, 0 }, 610 611 612 // H(curl) basis Functions and their curls 613 614 {"BF_Edge", (CAST)BF_Edge, 615 (CAST)BF_CurlEdge, (CAST)BF_Zero, 0.5, ALL, 1 }, 616 {"BF_Edge_1E", (CAST)BF_Edge, 617 (CAST)BF_CurlEdge, (CAST)BF_Zero, 0.5, ALL, 1 }, 618 {"BF_Edge_2E", (CAST)BF_Edge_2E, 619 (CAST)BF_CurlEdge_2E, (CAST)BF_Zero, 1., LIN|TRI|TET, 0 }, 620 {"BF_Edge_2F", (CAST)BF_Edge_2F, 621 (CAST)BF_CurlEdge_2F, (CAST)BF_Zero, 1., ALL, 0 }, 622 {"BF_Edge_2V", (CAST)BF_Edge_2V, 623 (CAST)BF_CurlEdge_2V, (CAST)BF_Zero, 1., ALL, 0 }, 624 {"BF_Edge_3E", (CAST)BF_Edge_3E, 625 (CAST)BF_CurlEdge_3E, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 626 {"BF_Edge_3F_a", (CAST)BF_Edge_3F_a, 627 (CAST)BF_CurlEdge_3F_a, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 628 {"BF_Edge_3F_b", (CAST)BF_Edge_3F_b, 629 (CAST)BF_CurlEdge_3F_b, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 630 {"BF_Edge_3F_c", (CAST)BF_Edge_3F_c, 631 (CAST)BF_CurlEdge_3F_c, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 632 {"BF_Edge_3V", (CAST)BF_Edge_3V, 633 (CAST)BF_CurlEdge_3V, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 634 {"BF_Edge_4E", (CAST)BF_Edge_4E, 635 (CAST)BF_CurlEdge_4E, (CAST)BF_Zero, 2., ALL, 0 }, 636 {"BF_Edge_4F", (CAST)BF_Edge_4F, 637 (CAST)BF_CurlEdge_4F, (CAST)BF_Zero, 2., LIN|TRI|TET, 0 }, 638 {"BF_Edge_4V", (CAST)BF_Edge_4V, 639 (CAST)BF_CurlEdge_4V, (CAST)BF_Zero, 2., LIN|TRI|TET, 0 }, 640 641 {"BF_CurlEdge", (CAST)BF_CurlEdge, 642 (CAST)BF_Zero, (CAST)BF_Edge, 0., ALL, 1 }, 643 {"BF_CurlEdge_1E", (CAST)BF_CurlEdge, 644 (CAST)BF_Zero, (CAST)BF_Edge, 0., ALL, 0 }, 645 {"BF_CurlEdge_2E", (CAST)BF_CurlEdge_2E, 646 (CAST)BF_Zero, (CAST)BF_Edge_2E, 0., LIN|TRI|TET, 0 }, 647 {"BF_CurlEdge_2F", (CAST)BF_CurlEdge_2F, 648 (CAST)BF_Zero, (CAST)BF_Edge_2F, 0., ALL, 0 }, 649 {"BF_CurlEdge_2V", (CAST)BF_CurlEdge_2V, 650 (CAST)BF_Zero, (CAST)BF_Edge_2V, 0., ALL, 0 }, 651 {"BF_CurlEdge_3E", (CAST)BF_CurlEdge_3E, 652 (CAST)BF_Zero, (CAST)BF_Edge_3E, 1., LIN|TRI|TET, 0 }, 653 {"BF_CurlEdge_3F_a", (CAST)BF_CurlEdge_3F_a, 654 (CAST)BF_Zero, (CAST)BF_Edge_3F_a, 1., LIN|TRI|TET, 0 }, 655 {"BF_CurlEdge_3F_b", (CAST)BF_CurlEdge_3F_b, 656 (CAST)BF_Zero, (CAST)BF_Edge_3F_b, 1., LIN|TRI|TET, 0 }, 657 {"BF_CurlEdge_3F_c", (CAST)BF_CurlEdge_3F_c, 658 (CAST)BF_Zero, (CAST)BF_Edge_3F_c, 1., LIN|TRI|TET, 0 }, 659 {"BF_CurlEdge_3V", (CAST)BF_CurlEdge_3V, 660 (CAST)BF_Zero, (CAST)BF_Edge_3V, 1., LIN|TRI|TET, 0 }, 661 {"BF_CurlEdge_4E", (CAST)BF_CurlEdge_4E, 662 (CAST)BF_Zero, (CAST)BF_Edge_4E, 1., ALL, 0 }, 663 {"BF_CurlEdge_4F", (CAST)BF_CurlEdge_4F, 664 (CAST)BF_Zero, (CAST)BF_Edge_4F, 1., LIN|TRI|TET, 0 }, 665 {"BF_CurlEdge_4V", (CAST)BF_CurlEdge_4V, 666 (CAST)BF_Zero, (CAST)BF_Edge_4V, 1., LIN|TRI|TET, 0 }, 667 668 {"BF_GroupOfEdges", (CAST)BF_GroupOfEdges, 669 (CAST)BF_CurlGroupOfEdges, (CAST)BF_Zero, 0.5, ALL, 1 }, 670 {"BF_GroupOfEdges_1E", (CAST)BF_GroupOfEdges, 671 (CAST)BF_CurlGroupOfEdges, (CAST)BF_Zero, 0.5, ALL, 0 }, 672 {"BF_GroupOfEdges_2E", (CAST)BF_GroupOfEdges_2E, 673 (CAST)BF_CurlGroupOfEdges_2E, (CAST)BF_Zero, 1., LIN|TRI|TET, 0 }, 674 {"BF_GroupOfEdges_2F", (CAST)BF_GroupOfEdges_2F, 675 (CAST)BF_CurlGroupOfEdges_2F, (CAST)BF_Zero, 1., ALL, 0 }, 676 {"BF_GroupOfEdges_2V", (CAST)BF_GroupOfEdges_2V, 677 (CAST)BF_CurlGroupOfEdges_2V, (CAST)BF_Zero, 1., ALL, 0 }, 678 {"BF_GroupOfEdges_3E", (CAST)BF_GroupOfEdges_3E, 679 (CAST)BF_CurlGroupOfEdges_3E, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 680 {"BF_GroupOfEdges_3F_a", (CAST)BF_GroupOfEdges_3F_a, 681 (CAST)BF_CurlGroupOfEdges_3F_a, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 682 {"BF_GroupOfEdges_3F_b", (CAST)BF_GroupOfEdges_3F_b, 683 (CAST)BF_CurlGroupOfEdges_3F_b, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 684 {"BF_GroupOfEdges_3F_c", (CAST)BF_GroupOfEdges_3F_c, 685 (CAST)BF_CurlGroupOfEdges_3F_c, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 686 {"BF_GroupOfEdges_3V", (CAST)BF_GroupOfEdges_3V, 687 (CAST)BF_CurlGroupOfEdges_3V, (CAST)BF_Zero, 1.5, LIN|TRI|TET, 0 }, 688 {"BF_GroupOfEdges_4E", (CAST)BF_GroupOfEdges_4E, 689 (CAST)BF_CurlGroupOfEdges_4E, (CAST)BF_Zero, 2., ALL, 0 }, 690 {"BF_GroupOfEdges_4F", (CAST)BF_GroupOfEdges_4F, 691 (CAST)BF_CurlGroupOfEdges_4F, (CAST)BF_Zero, 2., LIN|TRI|TET, 0 }, 692 {"BF_GroupOfEdges_4V", (CAST)BF_GroupOfEdges_4V, 693 (CAST)BF_CurlGroupOfEdges_4V, (CAST)BF_Zero, 2., LIN|TRI|TET, 0 }, 694 695 {"BF_CurlGroupOfEdges", (CAST)BF_CurlGroupOfEdges, 696 (CAST)BF_Zero, (CAST)BF_GroupOfEdges, 0., ALL, 1 }, 697 {"BF_CurlGroupOfEdges_1E", (CAST)BF_CurlGroupOfEdges, 698 (CAST)BF_Zero, (CAST)BF_GroupOfEdges, 0., ALL, 0 }, 699 {"BF_CurlGroupOfEdges_2E", (CAST)BF_CurlGroupOfEdges_2E, 700 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_2E, 0., LIN|TRI|TET, 0 }, 701 {"BF_CurlGroupOfEdges_2F", (CAST)BF_CurlGroupOfEdges_2F, 702 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_2F, 0., ALL, 0 }, 703 {"BF_CurlGroupOfEdges_2V", (CAST)BF_CurlGroupOfEdges_2V, 704 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_2V, 0., ALL, 0 }, 705 {"BF_CurlGroupOfEdges_3E", (CAST)BF_CurlGroupOfEdges_3E, 706 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_3E, 1., LIN|TRI|TET, 0 }, 707 {"BF_CurlGroupOfEdges_3F_a", (CAST)BF_CurlGroupOfEdges_3F_a, 708 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_3F_a, 1., LIN|TRI|TET, 0 }, 709 {"BF_CurlGroupOfEdges_3F_b", (CAST)BF_CurlGroupOfEdges_3F_b, 710 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_3F_b, 1., LIN|TRI|TET, 0 }, 711 {"BF_CurlGroupOfEdges_3F_c", (CAST)BF_CurlGroupOfEdges_3F_c, 712 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_3F_c, 1., LIN|TRI|TET, 0 }, 713 {"BF_CurlGroupOfEdges_3V", (CAST)BF_CurlGroupOfEdges_3V, 714 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_3V, 1., LIN|TRI|TET, 0 }, 715 {"BF_CurlGroupOfEdges_4E", (CAST)BF_CurlGroupOfEdges_4E, 716 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_4E, 1., ALL, 0 }, 717 {"BF_CurlGroupOfEdges_4F", (CAST)BF_CurlGroupOfEdges_4F, 718 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_4F, 1., LIN|TRI|TET, 0 }, 719 {"BF_CurlGroupOfEdges_4V", (CAST)BF_CurlGroupOfEdges_4V, 720 (CAST)BF_Zero, (CAST)BF_GroupOfEdges_4V, 1., LIN|TRI|TET, 0 }, 721 722 723 // H(curl, perp) basis Functions and their curls 724 725 {"BF_PerpendicularEdge", (CAST)BF_PerpendicularEdge, 726 (CAST)BF_CurlPerpendicularEdge, (CAST)BF_Zero, 1., ALL, 0 }, 727 {"BF_PerpendicularEdge_1N", (CAST)BF_PerpendicularEdge, 728 (CAST)BF_CurlPerpendicularEdge, (CAST)BF_Zero, 1., ALL, 0 }, 729 {"BF_PerpendicularEdge_2E", (CAST)BF_PerpendicularEdge_2E, 730 (CAST)BF_CurlPerpendicularEdge_2E, (CAST)BF_Zero, 2., ALL, 0 }, 731 {"BF_PerpendicularEdge_2F", (CAST)BF_PerpendicularEdge_2F, 732 (CAST)BF_CurlPerpendicularEdge_2F, (CAST)BF_Zero, 2., QUA|HEX|PRI, 0 }, 733 {"BF_PerpendicularEdge_2V", (CAST)BF_PerpendicularEdge_2V, 734 (CAST)BF_CurlPerpendicularEdge_2V, (CAST)BF_Zero, 2., QUA|HEX, 0 }, 735 {"BF_PerpendicularEdge_3E", (CAST)BF_PerpendicularEdge_3E, 736 (CAST)BF_CurlPerpendicularEdge_3E, (CAST)BF_Zero, 3., ALL, 0 }, 737 {"BF_PerpendicularEdge_3F", (CAST)BF_PerpendicularEdge_3F, 738 (CAST)BF_CurlPerpendicularEdge_3F, (CAST)BF_Zero, 3., TRI|QUA|TET|HEX|PRI, 0 }, 739 {"BF_PerpendicularEdge_3V", (CAST)BF_PerpendicularEdge_3V, 740 (CAST)BF_CurlPerpendicularEdge_3V, (CAST)BF_Zero, 3., HEX|PRI, 0 }, 741 742 {"BF_CurlPerpendicularEdge", (CAST)BF_CurlPerpendicularEdge, 743 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge, 0., ALL, 0 }, 744 {"BF_CurlPerpendicularEdge_1N", (CAST)BF_CurlPerpendicularEdge, 745 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge, 0., ALL, 0 }, 746 {"BF_CurlPerpendicularEdge_2E", (CAST)BF_CurlPerpendicularEdge_2E, 747 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge_2E, 1., ALL, 0 }, 748 {"BF_CurlPerpendicularEdge_2F", (CAST)BF_CurlPerpendicularEdge_2F, 749 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge_2F, 1., QUA|HEX|PRI, 0 }, 750 {"BF_CurlPerpendicularEdge_2V", (CAST)BF_CurlPerpendicularEdge_2V, 751 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge_2V, 1., QUA|HEX, 0 }, 752 {"BF_CurlPerpendicularEdge_3E", (CAST)BF_CurlPerpendicularEdge_3E, 753 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge_3E, 2., ALL, 0 }, 754 {"BF_CurlPerpendicularEdge_3F", (CAST)BF_CurlPerpendicularEdge_3F, 755 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge_3F, 2., TRI|QUA|TET|HEX|PRI, 0 }, 756 {"BF_CurlPerpendicularEdge_3V", (CAST)BF_CurlPerpendicularEdge_3V, 757 (CAST)BF_Zero, (CAST)BF_PerpendicularEdge_3V, 2., HEX|PRI, 0 }, 758 759 {"BF_GroupOfPerpendicularEdges", (CAST)BF_GroupOfPerpendicularEdges, 760 (CAST)BF_CurlGroupOfPerpendicularEdges, (CAST)BF_Zero, 1., ALL, 0 }, 761 {"BF_GroupOfPerpendicularEdges_1N", (CAST)BF_GroupOfPerpendicularEdges, 762 (CAST)BF_CurlGroupOfPerpendicularEdges, (CAST)BF_Zero, 1., ALL, 0 }, 763 {"BF_GroupOfPerpendicularEdges_2E", (CAST)BF_GroupOfPerpendicularEdges_2E, 764 (CAST)BF_CurlGroupOfPerpendicularEdges_2E, (CAST)BF_Zero, 2., ALL, 0 }, 765 {"BF_GroupOfPerpendicularEdges_2F", (CAST)BF_GroupOfPerpendicularEdges_2F, 766 (CAST)BF_CurlGroupOfPerpendicularEdges_2F, (CAST)BF_Zero, 2., QUA|HEX|PRI, 0 }, 767 {"BF_GroupOfPerpendicularEdges_2V", (CAST)BF_GroupOfPerpendicularEdges_2V, 768 (CAST)BF_CurlGroupOfPerpendicularEdges_2V, (CAST)BF_Zero, 2., QUA|HEX, 0 }, 769 {"BF_GroupOfPerpendicularEdges_3E", (CAST)BF_GroupOfPerpendicularEdges_3E, 770 (CAST)BF_CurlGroupOfPerpendicularEdges_3E, (CAST)BF_Zero, 3., ALL, 0 }, 771 {"BF_GroupOfPerpendicularEdges_3F", (CAST)BF_GroupOfPerpendicularEdges_3F, 772 (CAST)BF_CurlGroupOfPerpendicularEdges_3F, (CAST)BF_Zero, 3., TRI|QUA|TET|HEX|PRI, 0 }, 773 {"BF_GroupOfPerpendicularEdges_3V", (CAST)BF_GroupOfPerpendicularEdges_3V, 774 (CAST)BF_CurlGroupOfPerpendicularEdges_3V, (CAST)BF_Zero, 3., HEX|PRI, 0 }, 775 776 {"BF_CurlGroupOfPerpendicularEdges", (CAST)BF_CurlGroupOfPerpendicularEdges, 777 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges, 0., ALL, 0 }, 778 {"BF_CurlGroupOfPerpendicularEdges_1N", (CAST)BF_CurlGroupOfPerpendicularEdges, 779 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges, 0., ALL, 0 }, 780 {"BF_CurlGroupOfPerpendicularEdges_2E", (CAST)BF_CurlGroupOfPerpendicularEdges_2E, 781 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges_2E, 1., ALL, 0 }, 782 {"BF_CurlGroupOfPerpendicularEdges_2F", (CAST)BF_CurlGroupOfPerpendicularEdges_2F, 783 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges_2F, 1., QUA|HEX|PRI, 0 }, 784 {"BF_CurlGroupOfPerpendicularEdges_2V", (CAST)BF_CurlGroupOfPerpendicularEdges_2V, 785 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges_2V, 1., QUA|HEX, 0 }, 786 {"BF_CurlGroupOfPerpendicularEdges_3E", (CAST)BF_CurlGroupOfPerpendicularEdges_3E, 787 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges_3E, 2., ALL, 0 }, 788 {"BF_CurlGroupOfPerpendicularEdges_3F", (CAST)BF_CurlGroupOfPerpendicularEdges_3F, 789 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges_3F, 2., TRI|QUA|TET|HEX|PRI, 0 }, 790 {"BF_CurlGroupOfPerpendicularEdges_3V", (CAST)BF_CurlGroupOfPerpendicularEdges_3V, 791 (CAST)BF_Zero, (CAST)BF_GroupOfPerpendicularEdges_3V, 2., HEX|PRI, 0 }, 792 793 794 // H(div) basis Functions and their divergences 795 796 {"BF_Facet", (CAST)BF_Facet, (CAST)BF_DivFacet, (CAST)BF_Zero, 0.5, ALL, 1 }, 797 798 {"BF_DivFacet", (CAST)BF_DivFacet, (CAST)BF_Zero, (CAST)BF_Facet, 0., ALL, 1 }, 799 800 {"BF_GroupOfFacets", (CAST)BF_GroupOfFacets, (CAST)BF_DivGroupOfFacets, (CAST)BF_Zero, 0.5, ALL, 1 }, 801 802 {"BF_DivGroupOfFacets", (CAST)BF_DivGroupOfFacets, (CAST)BF_Zero, (CAST)BF_GroupOfFacets, 0., ALL, 1 }, 803 804 // Current along wire 805 {"BF_Wire", (CAST)BF_Wire, (CAST)BF_DivWire, (CAST)BF_Zero, 1., LIN, 0 }, 806 {"BF_DivWire", (CAST)BF_DivWire, (CAST)BF_Zero, (CAST)BF_Wire, 0., LIN, 0 }, 807 808 // H(div, perp) basis Functions and their divergences 809 810 {"BF_PerpendicularFacet", (CAST)BF_PerpendicularFacet, 811 (CAST)BF_DivPerpendicularFacet, (CAST)BF_Zero, 0.5, ALL, 1 }, 812 {"BF_PerpendicularFacet_1E", (CAST)BF_PerpendicularFacet, 813 (CAST)BF_DivPerpendicularFacet, (CAST)BF_Zero, 0.5, ALL, 0 }, 814 {"BF_PerpendicularFacet_2E", (CAST)BF_PerpendicularFacet_2E, 815 (CAST)BF_DivPerpendicularFacet_2E, (CAST)BF_Zero, 1., ALL, 0 }, 816 {"BF_PerpendicularFacet_2F", (CAST)BF_PerpendicularFacet_2F, 817 (CAST)BF_DivPerpendicularFacet_2F, (CAST)BF_Zero, 1., ALL, 0 }, 818 {"BF_PerpendicularFacet_2V", (CAST)BF_PerpendicularFacet_2V, 819 (CAST)BF_DivPerpendicularFacet_2V, (CAST)BF_Zero, 1., ALL, 0 }, 820 {"BF_PerpendicularFacet_3E", (CAST)BF_PerpendicularFacet_3E, 821 (CAST)BF_DivPerpendicularFacet_3E, (CAST)BF_Zero, 1.5, ALL, 0 }, 822 {"BF_PerpendicularFacet_3F_a", (CAST)BF_PerpendicularFacet_3F_a, 823 (CAST)BF_DivPerpendicularFacet_3F_a, (CAST)BF_Zero, 1.5, ALL, 0 }, 824 {"BF_PerpendicularFacet_3F_b", (CAST)BF_PerpendicularFacet_3F_b, 825 (CAST)BF_DivPerpendicularFacet_3F_b, (CAST)BF_Zero, 1.5, ALL, 0 }, 826 {"BF_PerpendicularFacet_3F_c", (CAST)BF_PerpendicularFacet_3F_c, 827 (CAST)BF_DivPerpendicularFacet_3F_c, (CAST)BF_Zero, 1.5, ALL, 0 }, 828 {"BF_PerpendicularFacet_3V", (CAST)BF_PerpendicularFacet_3V, 829 (CAST)BF_DivPerpendicularFacet_3V, (CAST)BF_Zero, 1.5, ALL, 0 }, 830 {"BF_PerpendicularFacet_4E", (CAST)BF_PerpendicularFacet_4E, 831 (CAST)BF_DivPerpendicularFacet_4E, (CAST)BF_Zero, 2., ALL, 0 }, 832 {"BF_PerpendicularFacet_4F", (CAST)BF_PerpendicularFacet_4F, 833 (CAST)BF_DivPerpendicularFacet_4F, (CAST)BF_Zero, 2., ALL, 0 }, 834 {"BF_PerpendicularFacet_4V", (CAST)BF_PerpendicularFacet_4V, 835 (CAST)BF_DivPerpendicularFacet_4V, (CAST)BF_Zero, 2., ALL, 0 }, 836 837 {"BF_DivPerpendicularFacet", (CAST)BF_DivPerpendicularFacet, 838 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet, 0., ALL, 1 }, 839 {"BF_DivPerpendicularFacet_1E", (CAST)BF_DivPerpendicularFacet, 840 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet, 0., ALL, 0 }, 841 {"BF_DivPerpendicularFacet_2E", (CAST)BF_DivPerpendicularFacet_2E, 842 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_2E, 0., ALL, 0 }, 843 {"BF_DivPerpendicularFacet_2F", (CAST)BF_DivPerpendicularFacet_2F, 844 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_2F, 0., ALL, 0 }, 845 {"BF_DivPerpendicularFacet_2V", (CAST)BF_DivPerpendicularFacet_2V, 846 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_2V, 0., ALL, 0 }, 847 {"BF_DivPerpendicularFacet_3E", (CAST)BF_DivPerpendicularFacet_3E, 848 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_3E, 1., ALL, 0 }, 849 {"BF_DivPerpendicularFacet_3F_a", (CAST)BF_DivPerpendicularFacet_3F_a, 850 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_3F_a, 1., ALL, 0 }, 851 {"BF_DivPerpendicularFacet_3F_b", (CAST)BF_DivPerpendicularFacet_3F_b, 852 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_3F_b, 1., ALL, 0 }, 853 {"BF_DivPerpendicularFacet_3F_c", (CAST)BF_DivPerpendicularFacet_3F_c, 854 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_3F_c, 1., ALL, 0 }, 855 {"BF_DivPerpendicularFacet_3V", (CAST)BF_DivPerpendicularFacet_3V, 856 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_3V, 1., ALL, 0 }, 857 {"BF_DivPerpendicularFacet_4E", (CAST)BF_DivPerpendicularFacet_4E, 858 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_4E, 1., ALL, 0 }, 859 {"BF_DivPerpendicularFacet_4F", (CAST)BF_DivPerpendicularFacet_4F, 860 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_4F, 1., ALL, 0 }, 861 {"BF_DivPerpendicularFacet_4V", (CAST)BF_DivPerpendicularFacet_4V, 862 (CAST)BF_Zero, (CAST)BF_PerpendicularFacet_4V, 1., ALL, 0 }, 863 864 // L^2 basis Functions 865 866 {"BF_Volume", (CAST)BF_Volume, (CAST)BF_Volume, (CAST)BF_Zero, 0., ALL, 0 }, 867 {"BF_VolumeX", (CAST)BF_VolumeX, (CAST)BF_VolumeX, (CAST)BF_Zero, 0., ALL, 0 }, 868 {"BF_VolumeY", (CAST)BF_VolumeY, (CAST)BF_VolumeY, (CAST)BF_Zero, 0., ALL, 0 }, 869 {"BF_VolumeZ", (CAST)BF_VolumeZ, (CAST)BF_VolumeZ, (CAST)BF_Zero, 0., ALL, 0 }, 870 871 // (H^1)^3 Basis Functions 872 873 {"BF_NodeX" , (CAST)BF_NodeX , (CAST)BF_NodeX_D1 , (CAST)BF_NodeX_D2 , 1. , ALL, 0 }, 874 {"BF_NodeY" , (CAST)BF_NodeY , (CAST)BF_NodeY_D1 , (CAST)BF_NodeY_D2 , 1. , ALL, 0 }, 875 {"BF_NodeZ" , (CAST)BF_NodeZ , (CAST)BF_NodeZ_D1 , (CAST)BF_NodeZ_D2 , 1. , ALL, 0 }, 876 877 {"BF_NodeX_2E" , (CAST)BF_NodeX_2E , (CAST)BF_NodeX_D1_2E , (CAST)BF_NodeX_D2_2E , 2. , LIN|TRI|TET|HEX, 0 }, 878 {"BF_NodeY_2E" , (CAST)BF_NodeY_2E , (CAST)BF_NodeY_D1_2E , (CAST)BF_NodeY_D2_2E , 2. , LIN|TRI|TET|HEX, 0 }, 879 {"BF_NodeZ_2E" , (CAST)BF_NodeZ_2E , (CAST)BF_NodeZ_D1_2E , (CAST)BF_NodeZ_D2_2E , 2. , LIN|TRI|TET|HEX, 0 }, 880 881 {"BF_NodeX_2F" , (CAST)BF_NodeX_2F , (CAST)BF_NodeX_D1_2F , (CAST)BF_NodeX_D2_2F , 2. , QUA|HEX/*|PRI*/, 0 }, 882 {"BF_NodeY_2F" , (CAST)BF_NodeY_2F , (CAST)BF_NodeY_D1_2F , (CAST)BF_NodeY_D2_2F , 2. , QUA|HEX/*|PRI*/, 0 }, 883 {"BF_NodeZ_2F" , (CAST)BF_NodeZ_2F , (CAST)BF_NodeZ_D1_2F , (CAST)BF_NodeZ_D2_2F , 2. , QUA|HEX/*|PRI*/, 0 }, 884 885 {"BF_NodeX_2V" , (CAST)BF_NodeX_2V , (CAST)BF_NodeX_D1_2V , (CAST)BF_NodeX_D2_2V , 2. , HEX, 0 }, 886 {"BF_NodeY_2V" , (CAST)BF_NodeY_2V , (CAST)BF_NodeY_D1_2V , (CAST)BF_NodeY_D2_2V , 2. , HEX, 0 }, 887 {"BF_NodeZ_2V" , (CAST)BF_NodeZ_2V , (CAST)BF_NodeZ_D1_2V , (CAST)BF_NodeZ_D2_2V , 2. , HEX, 0 }, 888 889 {"BF_NodeX_3E" , (CAST)BF_NodeX_3E , (CAST)BF_NodeX_D1_3E , (CAST)BF_NodeX_D2_3E , 3. , ALL, 0 }, 890 {"BF_NodeY_3E" , (CAST)BF_NodeY_3E , (CAST)BF_NodeY_D1_3E , (CAST)BF_NodeY_D2_3E , 3. , ALL, 0 }, 891 {"BF_NodeZ_3E" , (CAST)BF_NodeZ_3E , (CAST)BF_NodeZ_D1_3E , (CAST)BF_NodeZ_D2_3E , 3. , ALL, 0 }, 892 893 {"BF_NodeX_3F" , (CAST)BF_NodeX_3F , (CAST)BF_NodeX_D1_3F , (CAST)BF_NodeX_D2_3F , 3. , TRI|QUA|TET|HEX|PRI, 0 }, 894 {"BF_NodeY_3F" , (CAST)BF_NodeY_3F , (CAST)BF_NodeY_D1_3F , (CAST)BF_NodeY_D2_3F , 3. , TRI|QUA|TET|HEX|PRI, 0 }, 895 {"BF_NodeZ_3F" , (CAST)BF_NodeZ_3F , (CAST)BF_NodeZ_D1_3F , (CAST)BF_NodeZ_D2_3F , 3. , TRI|QUA|TET|HEX|PRI, 0 }, 896 897 {"BF_NodeX_3V" , (CAST)BF_NodeX_3V , (CAST)BF_NodeX_D1_3V , (CAST)BF_NodeX_D2_3V , 3. , HEX|PRI, 0 }, 898 {"BF_NodeY_3V" , (CAST)BF_NodeY_3V , (CAST)BF_NodeY_D1_3V , (CAST)BF_NodeY_D2_3V , 3. , HEX|PRI, 0 }, 899 {"BF_NodeZ_3V" , (CAST)BF_NodeZ_3V , (CAST)BF_NodeZ_D1_3V , (CAST)BF_NodeZ_D2_3V , 3. , HEX|PRI, 0 }, 900 901 902 {"BF_NodeX_D1" , (CAST)BF_NodeX_D1 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 903 {"BF_NodeY_D1" , (CAST)BF_NodeY_D1 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 904 {"BF_NodeZ_D1" , (CAST)BF_NodeZ_D1 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 905 906 {"BF_NodeX_D1_2E" , (CAST)BF_NodeX_D1_2E , (CAST)BF_Zero , (CAST)BF_Zero , 1. , ALL, 0 }, 907 {"BF_NodeY_D1_2E" , (CAST)BF_NodeY_D1_2E , (CAST)BF_Zero , (CAST)BF_Zero , 1. , ALL, 0 }, 908 {"BF_NodeZ_D1_2E" , (CAST)BF_NodeZ_D1_2E , (CAST)BF_Zero , (CAST)BF_Zero , 1. , ALL, 0 }, 909 910 {"BF_NodeX_D1_2F" , (CAST)BF_NodeX_D1_2F , (CAST)BF_Zero , (CAST)BF_Zero , 1. , QUA|HEX/*|PRI*/, 0 }, 911 {"BF_NodeY_D1_2F" , (CAST)BF_NodeY_D1_2F , (CAST)BF_Zero , (CAST)BF_Zero , 1. , QUA|HEX/*|PRI*/, 0 }, 912 {"BF_NodeZ_D1_2F" , (CAST)BF_NodeZ_D1_2F , (CAST)BF_Zero , (CAST)BF_Zero , 1. , QUA|HEX/*|PRI*/, 0 }, 913 914 {"BF_NodeX_D1_2V" , (CAST)BF_NodeX_D1_2V , (CAST)BF_Zero , (CAST)BF_Zero , 1. , HEX, 0 }, 915 {"BF_NodeY_D1_2V" , (CAST)BF_NodeY_D1_2V , (CAST)BF_Zero , (CAST)BF_Zero , 1. , HEX, 0 }, 916 {"BF_NodeZ_D1_2V" , (CAST)BF_NodeZ_D1_2V , (CAST)BF_Zero , (CAST)BF_Zero , 1. , HEX, 0 }, 917 918 {"BF_NodeX_D1_3E" , (CAST)BF_NodeX_D1_3E , (CAST)BF_Zero , (CAST)BF_Zero , 2. , ALL, 0 }, 919 {"BF_NodeY_D1_3E" , (CAST)BF_NodeY_D1_3E , (CAST)BF_Zero , (CAST)BF_Zero , 2. , ALL, 0 }, 920 {"BF_NodeZ_D1_3E" , (CAST)BF_NodeZ_D1_3E , (CAST)BF_Zero , (CAST)BF_Zero , 2. , ALL, 0 }, 921 922 {"BF_NodeX_D1_3F" , (CAST)BF_NodeX_D1_3F , (CAST)BF_Zero , (CAST)BF_Zero , 2. , TRI|QUA|TET|HEX|PRI, 0 }, 923 {"BF_NodeY_D1_3F" , (CAST)BF_NodeY_D1_3F , (CAST)BF_Zero , (CAST)BF_Zero , 2. , TRI|QUA|TET|HEX|PRI, 0 }, 924 {"BF_NodeZ_D1_3F" , (CAST)BF_NodeZ_D1_3F , (CAST)BF_Zero , (CAST)BF_Zero , 2. , TRI|QUA|TET|HEX|PRI, 0 }, 925 926 {"BF_NodeX_D1_3V" , (CAST)BF_NodeX_D1_3V , (CAST)BF_Zero , (CAST)BF_Zero , 2. , HEX|PRI, 0 }, 927 {"BF_NodeY_D1_3V" , (CAST)BF_NodeY_D1_3V , (CAST)BF_Zero , (CAST)BF_Zero , 2. , HEX|PRI, 0 }, 928 {"BF_NodeZ_D1_3V" , (CAST)BF_NodeZ_D1_3V , (CAST)BF_Zero , (CAST)BF_Zero , 2. , HEX|PRI, 0 }, 929 930 931 {"BF_NodeX_D2" , (CAST)BF_NodeX_D2 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 932 {"BF_NodeY_D2" , (CAST)BF_NodeY_D2 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 933 {"BF_NodeZ_D2" , (CAST)BF_NodeZ_D2 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 934 935 {"BF_NodeX_D2_2E" , (CAST)BF_NodeX_D2_2E , (CAST)BF_Zero , (CAST)BF_Zero , 1. , ALL, 0 }, 936 {"BF_NodeY_D2_2E" , (CAST)BF_NodeY_D2_2E , (CAST)BF_Zero , (CAST)BF_Zero , 1. , ALL, 0 }, 937 {"BF_NodeZ_D2_2E" , (CAST)BF_NodeZ_D2_2E , (CAST)BF_Zero , (CAST)BF_Zero , 1. , ALL, 0 }, 938 939 {"BF_NodeX_D2_2F" , (CAST)BF_NodeX_D2_2F , (CAST)BF_Zero , (CAST)BF_Zero , 1. , QUA|HEX/*|PRI*/, 0 }, 940 {"BF_NodeY_D2_2F" , (CAST)BF_NodeY_D2_2F , (CAST)BF_Zero , (CAST)BF_Zero , 1. , QUA|HEX/*|PRI*/, 0 }, 941 {"BF_NodeZ_D2_2F" , (CAST)BF_NodeZ_D2_2F , (CAST)BF_Zero , (CAST)BF_Zero , 1. , QUA|HEX/*|PRI*/, 0 }, 942 943 {"BF_NodeX_D2_2V" , (CAST)BF_NodeX_D2_2V , (CAST)BF_Zero , (CAST)BF_Zero , 1. , HEX, 0 }, 944 {"BF_NodeY_D2_2V" , (CAST)BF_NodeY_D2_2V , (CAST)BF_Zero , (CAST)BF_Zero , 1. , HEX, 0 }, 945 {"BF_NodeZ_D2_2V" , (CAST)BF_NodeZ_D2_2V , (CAST)BF_Zero , (CAST)BF_Zero , 1. , HEX, 0 }, 946 947 {"BF_NodeX_D2_3E" , (CAST)BF_NodeX_D2_3E , (CAST)BF_Zero , (CAST)BF_Zero , 2. , ALL, 0 }, 948 {"BF_NodeY_D2_3E" , (CAST)BF_NodeY_D2_3E , (CAST)BF_Zero , (CAST)BF_Zero , 2. , ALL, 0 }, 949 {"BF_NodeZ_D2_3E" , (CAST)BF_NodeZ_D2_3E , (CAST)BF_Zero , (CAST)BF_Zero , 2. , ALL, 0 }, 950 951 {"BF_NodeX_D2_3F" , (CAST)BF_NodeX_D2_3F , (CAST)BF_Zero , (CAST)BF_Zero , 2. , TRI|QUA|TET|HEX|PRI, 0 }, 952 {"BF_NodeY_D2_3F" , (CAST)BF_NodeY_D2_3F , (CAST)BF_Zero , (CAST)BF_Zero , 2. , TRI|QUA|TET|HEX|PRI, 0 }, 953 {"BF_NodeZ_D2_3F" , (CAST)BF_NodeZ_D2_3F , (CAST)BF_Zero , (CAST)BF_Zero , 2. , TRI|QUA|TET|HEX|PRI, 0 }, 954 955 {"BF_NodeX_D2_3V" , (CAST)BF_NodeX_D2_3V , (CAST)BF_Zero , (CAST)BF_Zero , 2. , HEX|PRI, 0 }, 956 {"BF_NodeY_D2_3V" , (CAST)BF_NodeY_D2_3V , (CAST)BF_Zero , (CAST)BF_Zero , 2. , HEX|PRI, 0 }, 957 {"BF_NodeZ_D2_3V" , (CAST)BF_NodeZ_D2_3V , (CAST)BF_Zero , (CAST)BF_Zero , 2. , HEX|PRI, 0 }, 958 959 960 {"BF_NodeX_D12" , (CAST)BF_NodeX_D12 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 961 {"BF_NodeY_D12" , (CAST)BF_NodeY_D12 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 962 {"BF_NodeZ_D12" , (CAST)BF_NodeZ_D12 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 963 964 {"BF_NodeX_D12_2E" , (CAST)BF_NodeX_D12_2E , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 965 {"BF_NodeY_D12_2E" , (CAST)BF_NodeY_D12_2E , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 966 {"BF_NodeZ_D12_2E" , (CAST)BF_NodeZ_D12_2E , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 967 968 969 {"BF_GroupOfNodesX" , (CAST)BF_GroupOfNodesX , (CAST)BF_GroupOfNodesX_D1 , (CAST)BF_GroupOfNodesX_D2 , 1. , ALL, 0 }, 970 {"BF_GroupOfNodesY" , (CAST)BF_GroupOfNodesY , (CAST)BF_GroupOfNodesY_D1 , (CAST)BF_GroupOfNodesY_D2 , 1. , ALL, 0 }, 971 {"BF_GroupOfNodesZ" , (CAST)BF_GroupOfNodesZ , (CAST)BF_GroupOfNodesZ_D1 , (CAST)BF_GroupOfNodesZ_D2 , 1. , ALL, 0 }, 972 973 {"BF_GroupOfNodesX_D1" , (CAST)BF_GroupOfNodesX_D1 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 974 {"BF_GroupOfNodesY_D1" , (CAST)BF_GroupOfNodesY_D1 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 975 {"BF_GroupOfNodesZ_D1" , (CAST)BF_GroupOfNodesZ_D1 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 976 977 {"BF_GroupOfNodesX_D2" , (CAST)BF_GroupOfNodesX_D2 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 978 {"BF_GroupOfNodesY_D2" , (CAST)BF_GroupOfNodesY_D2 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 979 {"BF_GroupOfNodesZ_D2" , (CAST)BF_GroupOfNodesZ_D2 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 980 981 {"BF_GroupOfNodesX_D12" , (CAST)BF_GroupOfNodesX_D12 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 982 {"BF_GroupOfNodesY_D12" , (CAST)BF_GroupOfNodesY_D12 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 983 {"BF_GroupOfNodesZ_D12" , (CAST)BF_GroupOfNodesZ_D12 , (CAST)BF_Zero , (CAST)BF_Zero , 0. , ALL, 0 }, 984 985 // Special basis Functions 986 987 {"BF_Zero", (CAST)BF_Zero, (CAST)BF_Zero, (CAST)BF_Zero, 0., ALL, 0 }, 988 {"BF_One", (CAST)BF_One, (CAST)BF_Zero, (CAST)BF_One, 0., ALL, 0 }, 989 {"BF_OneZ", (CAST)BF_OneZ, (CAST)BF_Zero, (CAST)BF_One, 0., ALL, 0 }, 990 991 {"BF_Region" , (CAST)BF_Region , (CAST)BF_dRegion , (CAST)BF_Zero , 0. , ALL, 0 }, 992 {"BF_RegionX" , (CAST)BF_RegionX , (CAST)BF_dRegionX , (CAST)BF_Zero , 0. , ALL, 0 }, 993 {"BF_RegionY" , (CAST)BF_RegionY , (CAST)BF_dRegionY , (CAST)BF_Zero , 0. , ALL, 0 }, 994 {"BF_RegionZ" , (CAST)BF_RegionZ , (CAST)BF_dRegionZ , (CAST)BF_Zero , 0. , ALL, 0 }, 995 996 {"BF_Global" , (CAST)BF_Global , (CAST)BF_dGlobal , (CAST)BF_dInvGlobal , 0. , ALL, 0 }, 997 {"BF_dGlobal" , (CAST)BF_dGlobal , (CAST)BF_Zero , (CAST)BF_Global, 0. , ALL, 0 }, 998 999 {NULL , NULL , NULL , NULL , 0. , ALL, 0 } 1000 } ; 1001 1002 #undef POI 1003 #undef LIN 1004 #undef TRI 1005 #undef QUA 1006 #undef TET 1007 #undef HEX 1008 #undef PRI 1009 #undef PYR 1010 #undef ALL 1011 1012 struct StringXFunction2Nbr F_Function[] = { /* #Par #Arg */ 1013 1014 /* #Par = -1 => free number of Parameters ; = -2 free even number */ 1015 /* #Arg ... same */ 1016 1017 // F_Math 1018 {"Exp" , (CAST)F_Exp , 0, 1 }, 1019 {"Log" , (CAST)F_Log , 0, 1 }, 1020 {"Log10" , (CAST)F_Log10 , 0, 1 }, 1021 {"Sqrt" , (CAST)F_Sqrt , 0, 1 }, 1022 {"Sin" , (CAST)F_Sin , 0, 1 }, 1023 {"Asin" , (CAST)F_Asin , 0, 1 }, 1024 {"Cos" , (CAST)F_Cos , 0, 1 }, 1025 {"Acos" , (CAST)F_Acos , 0, 1 }, 1026 {"Tan" , (CAST)F_Tan , 0, 1 }, 1027 {"Atan" , (CAST)F_Atan , 0, 1 }, 1028 {"Sinh" , (CAST)F_Sinh , 0, 1 }, 1029 {"Cosh" , (CAST)F_Cosh , 0, 1 }, 1030 {"Tanh" , (CAST)F_Tanh , 0, 1 }, 1031 {"Atanh" , (CAST)F_Atanh , 0, 1 }, 1032 {"Fabs" , (CAST)F_Fabs , 0, 1 }, 1033 {"Abs" , (CAST)F_Abs , 0, 1 }, 1034 {"Floor" , (CAST)F_Floor , 0, 1 }, 1035 {"Ceil" , (CAST)F_Ceil , 0, 1 }, 1036 {"Atan2" , (CAST)F_Atan2 , 0, 2 }, 1037 {"Fmod" , (CAST)F_Fmod , 0, 2 }, 1038 {"Sign" , (CAST)F_Sign , 0, 1 }, 1039 {"Min" , (CAST)F_Min , 0, 2 }, 1040 {"Max" , (CAST)F_Max , 0, 2 }, 1041 {"Jn" , (CAST)F_Jn , 0, 2 }, 1042 {"JnComplex" , (CAST)F_JnComplex , 0, 2 }, 1043 {"KnComplex" , (CAST)F_KnComplex , 0, 2 }, 1044 {"Yn" , (CAST)F_Yn , 0, 2 }, 1045 {"dJn" , (CAST)F_dJn , 0, 2 }, 1046 {"dYn" , (CAST)F_dYn , 0, 2 }, 1047 {"JnSph" , (CAST)F_JnSph , 0, 2 }, 1048 {"YnSph" , (CAST)F_YnSph , 0, 2 }, 1049 {"dJnSph" , (CAST)F_dJnSph , 0, 2 }, 1050 {"dYnSph" , (CAST)F_dYnSph , 0, 2 }, 1051 1052 // F_ExtMath 1053 {"Hypot" , (CAST)F_Hypot , 0, 2 }, 1054 {"TanhC2" , (CAST)F_TanhC2 , 0, 1 }, 1055 {"Transpose" , (CAST)F_Transpose , 0, 1 }, 1056 {"Inv" , (CAST)F_Inv , 0, 1 }, 1057 {"Det" , (CAST)F_Det , 0, 1 }, 1058 {"TTrace" , (CAST)F_Trace , 0, 1 }, 1059 {"Rotate" , (CAST)F_RotateXYZ , 0, 4 }, 1060 {"Norm" , (CAST)F_Norm , 0, 1 }, 1061 {"SquNorm" , (CAST)F_SquNorm , 0, 1 }, 1062 {"Unit" , (CAST)F_Unit , 0, 1 }, 1063 {"ScalarUnit" , (CAST)F_ScalarUnit , 0, 1 }, 1064 {"Normalized" , (CAST)F_Unit , 0, 1 }, 1065 {"Cos_wt_p" , (CAST)F_Cos_wt_p , 2, 0 }, 1066 {"Sin_wt_p" , (CAST)F_Sin_wt_p , 2, 0 }, 1067 {"F_Cos_wt_p" , (CAST)F_Cos_wt_p , 2, 0 }, 1068 {"F_Sin_wt_p" , (CAST)F_Sin_wt_p , 2, 0 }, 1069 {"Period" , (CAST)F_Period , 1, 1 }, 1070 {"F_Period" , (CAST)F_Period , 1, 1 }, 1071 {"Interval" , (CAST)F_Interval , 3, 3 }, 1072 {"Complex" , (CAST)F_Complex , -2, -2 }, 1073 {"Complex_MH" , (CAST)F_Complex_MH , -1, -2 }, 1074 {"Re" , (CAST)F_Re , 0, 1 }, 1075 {"Im" , (CAST)F_Im , 0, 1 }, 1076 {"Conj" , (CAST)F_Conj , 0, 1 }, 1077 {"Cart2Pol" , (CAST)F_Cart2Pol , 0, 1 }, 1078 {"Vector" , (CAST)F_Vector , 0, 3 }, 1079 {"Tensor" , (CAST)F_Tensor , 0, 9 }, 1080 {"TensorV" , (CAST)F_TensorV , 0, 3 }, 1081 {"TensorSym" , (CAST)F_TensorSym , 0, 6 }, 1082 {"TensorDiag" , (CAST)F_TensorDiag , 0, 3 }, 1083 {"SquDyadicProduct" , (CAST)F_SquDyadicProduct , 0, 1 }, 1084 {"Comp" , (CAST)F_Comp , 1, 1 }, 1085 {"CompX" , (CAST)F_CompX , 0, 1 }, 1086 {"CompY" , (CAST)F_CompY , 0, 1 }, 1087 {"CompZ" , (CAST)F_CompZ , 0, 1 }, 1088 {"CompXX" , (CAST)F_CompXX , 0, 1 }, 1089 {"CompXY" , (CAST)F_CompXY , 0, 1 }, 1090 {"CompXZ" , (CAST)F_CompXZ , 0, 1 }, 1091 {"CompYX" , (CAST)F_CompYX , 0, 1 }, 1092 {"CompYY" , (CAST)F_CompYY , 0, 1 }, 1093 {"CompYZ" , (CAST)F_CompYZ , 0, 1 }, 1094 {"CompZX" , (CAST)F_CompZX , 0, 1 }, 1095 {"CompZY" , (CAST)F_CompZY , 0, 1 }, 1096 {"CompZZ" , (CAST)F_CompZZ , 0, 1 }, 1097 {"Cart2Sph" , (CAST)F_Cart2Sph , 0, 1 }, 1098 {"Cart2Cyl" , (CAST)F_Cart2Cyl , 0, 1 }, 1099 {"UnitVectorX" , (CAST)F_UnitVectorX , 0, 0 }, 1100 {"UnitVectorY" , (CAST)F_UnitVectorY , 0, 0 }, 1101 {"UnitVectorZ" , (CAST)F_UnitVectorZ , 0, 0 }, 1102 1103 // F_Coord 1104 {"CoordX" , (CAST)F_CoordX , 0, 0 }, 1105 {"CoordY" , (CAST)F_CoordY , 0, 0 }, 1106 {"CoordZ" , (CAST)F_CoordZ , 0, 0 }, 1107 {"CoordXYZ" , (CAST)F_CoordXYZ , 0, 0 }, 1108 {"X" , (CAST)F_CoordX , 0, 0 }, 1109 {"Y" , (CAST)F_CoordY , 0, 0 }, 1110 {"Z" , (CAST)F_CoordZ , 0, 0 }, 1111 {"XYZ" , (CAST)F_CoordXYZ , 0, 0 }, 1112 {"F_aX_bY_cZ" , (CAST)F_aX_bY_cZ , 3, 0 }, 1113 {"F_aX21_bY21_cZ21" , (CAST)F_aX21_bY21_cZ21 , 3, 0 }, 1114 {"XS" , (CAST)F_CoordXS , 0, 0 }, 1115 {"YS" , (CAST)F_CoordYS , 0, 0 }, 1116 {"ZS" , (CAST)F_CoordZS , 0, 0 }, 1117 {"XYZS" , (CAST)F_CoordXYZS , 0, 0 }, 1118 1119 // F_Geometry 1120 {"Normal" , (CAST)F_Normal , 0, 0 }, 1121 {"NormalSource" , (CAST)F_NormalSource , 0, 0 }, 1122 {"Tangent" , (CAST)F_Tangent , 0, 0 }, 1123 {"TangentSource" , (CAST)F_TangentSource , 0, 0 }, 1124 {"ElementVol" , (CAST)F_ElementVol , 0, 0 }, 1125 {"SurfaceArea" , (CAST)F_SurfaceArea , -1, 0 }, 1126 {"GetVolume" , (CAST)F_GetVolume , -1, 0 }, 1127 {"GetNumElement" , (CAST)F_GetNumElement , 0, 0 }, 1128 {"GetNumElements" , (CAST)F_GetNumElements , -1, 0 }, 1129 {"GetNumNodes" , (CAST)F_GetNumNodes , 0, 0 }, 1130 {"CellSize" , (CAST)F_CellSize , -1, 0 }, 1131 {"ProjectPointOnEllipse", (CAST)F_ProjectPointOnEllipse, 2, 1 }, 1132 {"SquNormEdgeValues" , (CAST)F_SquNormEdgeValues, 2, 0 }, 1133 1134 // F_Misc 1135 {"Printf" , (CAST)F_Printf , 0, 1 }, 1136 {"Rand" , (CAST)F_Rand , 0, 1 }, 1137 {"CompElementNum" , (CAST)F_CompElementNum , 0, 0 }, 1138 {"ElementNum" , (CAST)F_ElementNum , 0, 0 }, 1139 {"QuadraturePointIndex" , (CAST)F_QuadraturePointIndex , 0, 0 }, 1140 {"CpuTime" , (CAST)F_GetCpuTime , 0, 0 }, 1141 {"GetCpuTime" , (CAST)F_GetCpuTime , 0, 0 }, 1142 {"GetWallClockTime" , (CAST)F_GetWallClockTime , 0, 0 }, 1143 {"Memory" , (CAST)F_GetMemory , 0, 0 }, 1144 {"GetMemory" , (CAST)F_GetMemory , 0, 0 }, 1145 {"SetNumberRunTime" , (CAST)F_SetNumberRunTime , -1, -1 }, 1146 {"SetNumberRunTimeWithChoices" , (CAST)F_SetNumberRunTimeWithChoices , -1, -1 }, 1147 {"GetNumberRunTime" , (CAST)F_GetNumberRunTime , -1, -1 }, 1148 {"SetVariable" , (CAST)F_SetVariable , -1, -1 }, 1149 {"SetCumulativeVariable" , (CAST)F_SetCumulativeVariable , -1, -1 }, 1150 {"GetVariable" , (CAST)F_GetVariable , -1, -1 }, 1151 {"ValueFromTable" , (CAST)F_ValueFromTable , -1, -1 }, 1152 {"VirtualWork" , (CAST)F_VirtualWork , 0, 1 }, 1153 {"Felec" , (CAST)F_Felec , 0, 1 }, 1154 1155 {"dFxdux" , (CAST)F_dFxdux , 0, 1 }, 1156 {"dFydux" , (CAST)F_dFydux , 0, 1 }, 1157 {"dFzdux" , (CAST)F_dFzdux , 0, 1 }, 1158 {"dFxduy" , (CAST)F_dFxduy , 0, 1 }, 1159 {"dFyduy" , (CAST)F_dFyduy , 0, 1 }, 1160 {"dFzduy" , (CAST)F_dFzduy , 0, 1 }, 1161 {"dFxduz" , (CAST)F_dFxduz , 0, 1 }, 1162 {"dFyduz" , (CAST)F_dFyduz , 0, 1 }, 1163 {"dFzduz" , (CAST)F_dFzduz , 0, 1 }, 1164 1165 {"dFxdv" , (CAST)F_dFxdv , 0, 1 }, 1166 {"dFydv" , (CAST)F_dFydv , 0, 1 }, 1167 {"dFzdv" , (CAST)F_dFzdv , 0, 1 }, 1168 1169 {"dWedxdv" , (CAST)F_dWedxdv , 0, 1 }, 1170 {"dWedydv" , (CAST)F_dWedydv , 0, 1 }, 1171 {"dWedzdv" , (CAST)F_dWedzdv , 0, 1 }, 1172 1173 {"NodeForceDensity" , (CAST)F_NodeForceDensity , 0, 1 }, 1174 {"AssDiag" , (CAST)F_AssDiag , -1, 0 }, 1175 1176 {"AtIndex" , (CAST)F_AtIndex , -1, 1 }, 1177 1178 // F_Interpolation 1179 {"InterpolationLinear" , (CAST)F_InterpolationLinear , -2, 1 }, 1180 {"dInterpolationLinear" , (CAST)F_dInterpolationLinear , -2, 1 }, 1181 {"dInterpolationLinear2" , (CAST)F_dInterpolationLinear2 , -2, 1 }, 1182 {"InterpolationAkima" , (CAST)F_InterpolationAkima , -2, 1 }, 1183 {"dInterpolationAkima" , (CAST)F_dInterpolationAkima , -2, 1 }, 1184 {"InterpolationBilinear" , (CAST)F_InterpolationBilinear , -1, 2 }, 1185 {"dInterpolationBilinear" , (CAST)F_dInterpolationBilinear , -1, 2 }, 1186 {"InterpolationTrilinear" , (CAST)F_InterpolationTrilinear , -1, 3 }, 1187 {"dInterpolationTrilinear", (CAST)F_dInterpolationTrilinear, -1, 3 }, 1188 {"ValueFromIndex" , (CAST)F_ValueFromIndex , -1, 0 }, 1189 {"VectorFromIndex" , (CAST)F_VectorFromIndex , -1, 0 }, 1190 1191 // F_Hysteresis 1192 {"dhdb_Jiles" , (CAST)F_dhdb_Jiles , -1, 3 }, 1193 {"dbdh_Jiles" , (CAST)F_dbdh_Jiles , -1, 3 }, 1194 {"h_Jiles" , (CAST)F_h_Jiles , -1, 3 }, 1195 {"b_Jiles" , (CAST)F_b_Jiles , -1, 3 }, 1196 {"dhdb_Ducharne" , (CAST)F_dhdb_Ducharne , -1, 3 }, 1197 {"h_Ducharne" , (CAST)F_h_Ducharne , -1, 3 }, 1198 {"nu_Ducharne" , (CAST)F_nu_Ducharne , -1, 3 }, 1199 //{"mu_Vinch" , (CAST)F_mu_Vinch , -1, 3 }, // NOT USED FOR NOW (26/06/2016) 1200 //{"nu_Vinch" , (CAST)F_nu_Vinch , -1, 3 }, // NOT USED FOR NOW (26/06/2016) 1201 //{"h_Vinch" , (CAST)F_h_Vinch , -1, 4 }, // NOT USED FOR NOW (26/06/2016) 1202 //{"dhdb_Vinch" , (CAST)F_dhdb_Vinch , -1, 3 }, // NOT USED FOR NOW (26/06/2016) 1203 //{"dbdh_Vinch" , (CAST)F_dbdh_Vinch , -1, 3 }, // NOT USED FOR NOW (26/06/2016) 1204 //{"Update_Jk" , (CAST)F_Update_Jk , -1, 6 }, //kj+++ // NOT USED FOR NOW (26/06/2016) 1205 //{"Update_Jk_sd" , (CAST)F_Update_Jk_sd , -1, 6 }, //kj+++ // NOT USED FOR NOW (26/06/2016) 1206 1207 {"Update_Cell_K" , (CAST)F_Update_Cell_K , -1, 4 }, //kj+++ 1208 {"b_Vinch_K" , (CAST)F_b_Vinch_K , -1, -1 }, // 1+3*2=7 //kj+++ 1209 {"hr_Vinch_K" , (CAST)F_hr_Vinch_K , -1, -1 }, // 1+3*1=4 //kj+++ 1210 {"Jr_Vinch_K" , (CAST)F_Jr_Vinch_K , -1, -1 }, // 1+3*1=4 //kj+++ 1211 {"h_Vinch_K" , (CAST)F_h_Vinch_K , -1, -1 }, // parameter is dimension {2},{3}, 3+3*2=9 //kj+++ 1212 {"dbdh_Vinch_K" , (CAST)F_dbdh_Vinch_K , -1, -1 }, // parameter is dimension {2},{3}, 1+3*2=7 //kj+++ 1213 {"dhdb_Vinch_K" , (CAST)F_dhdb_Vinch_K , -1, -1 }, // parameter is dimension {2},{3}, 1+3*2=7 //kj+++ 1214 1215 {"Cell_EB" , (CAST)F_Cell_EB , -1, 3 }, //kj+++ 1216 {"b_EB" , (CAST)F_b_EB , -1, -1 }, // 1+3*2=7 //kj+++ 1217 {"hrev_EB" , (CAST)F_hrev_EB , -1, -1 }, // 1+3*1=4 //kj+++ 1218 {"Jrev_EB" , (CAST)F_Jrev_EB , -1, -1 }, // 1+3*1=4 //kj+++ 1219 {"h_EB" , (CAST)F_h_EB , -1, -1 }, // parameter is dimension {2},{3}, 3+3*2=9 //kj+++ 1220 {"dbdh_EB" , (CAST)F_dbdh_EB , -1, -1 }, // parameter is dimension {2},{3}, 1+3*2=7 //kj+++ 1221 {"dhdb_EB" , (CAST)F_dhdb_EB , -1, -1 }, // parameter is dimension {2},{3}, 1+3*2=7 //kj+++ 1222 1223 1224 // F_MultiHar 1225 {"MHToTime" , (CAST)F_MHToTime , 0, 2 }, 1226 1227 // F_Analytic 1228 {"JFIE_ZPolAnalyticOnCyl", (CAST)F_JFIE_ZPolCyl , 4, 1 }, 1229 {"RCS_ZPolAnalyticCyl", (CAST)F_RCS_ZPolCyl , 3, 1 }, 1230 {"JFIE_TransZPolAnalyticOnCyl", (CAST)F_JFIE_TransZPolCyl, 3, 1 }, 1231 {"JFIE_OnSphCutTheta", (CAST)F_JFIE_SphTheta, 4, 1 }, 1232 {"RCS_SphTheta", (CAST)F_RCS_SphTheta, 4, 1 }, 1233 {"JFIE_OnSphCutPhi", (CAST)F_JFIE_SphPhi, 4, 1 }, 1234 {"RCS_SphPhi", (CAST)F_RCS_SphPhi, 4, 1 }, 1235 {"CurrentPerfectlyConductingSphere",(CAST)F_CurrentPerfectlyConductingSphere, 3, 1 }, 1236 1237 {"ElectricFieldPerfectlyConductingSphereMwt", (CAST)F_ElectricFieldPerfectlyConductingSphereMwt, 2, 1 }, 1238 {"ElectricFieldDielectricSphereMwt", (CAST)F_ElectricFieldDielectricSphereMwt, 2, 1 }, 1239 {"ExactOsrcSolutionPerfectlyConductingSphereMwt", (CAST)F_ExactOsrcSolutionPerfectlyConductingSphereMwt, 3, 1 }, 1240 {"CurrentPerfectlyConductingSphereMwt",(CAST)F_CurrentPerfectlyConductingSphereMwt, 3, 1 }, 1241 1242 {"AcousticFieldSoftSphere", (CAST)F_AcousticFieldSoftSphere, -1, 1 }, 1243 {"AcousticFieldSoftSphereABC", (CAST)F_AcousticFieldSoftSphereABC, 5, 1 }, 1244 {"DrAcousticFieldSoftSphere", (CAST)F_DrAcousticFieldSoftSphere, 2, 1 }, 1245 {"RCSSoftSphere", (CAST)F_RCSSoftSphere, 2, 1 }, 1246 {"AcousticFieldHardSphere", (CAST)F_AcousticFieldHardSphere, -1, 1 }, 1247 {"RCSHardSphere", (CAST)F_RCSHardSphere, 2, 1 }, 1248 {"AcousticFieldSoftCylinder", (CAST)F_AcousticFieldSoftCylinder, -1, 1 }, 1249 {"AcousticFieldSoftCylinderABC", (CAST)F_AcousticFieldSoftCylinderABC, 5, 1 }, 1250 {"DrAcousticFieldSoftCylinder", (CAST)F_DrAcousticFieldSoftCylinder, 2, 1 }, 1251 {"RCSSoftCylinder", (CAST)F_RCSSoftCylinder, 2, 1 }, 1252 {"AcousticFieldHardCylinder", (CAST)F_AcousticFieldHardCylinder, -1, 1 }, 1253 {"AcousticFieldHardCylinderABC", (CAST)F_AcousticFieldHardCylinderABC, 5, 1 }, 1254 {"DthetaAcousticFieldHardCylinder", (CAST)F_DthetaAcousticFieldHardCylinder, 2, 1 }, 1255 {"RCSHardCylinder", (CAST)F_RCSHardCylinder, 2, 1 }, 1256 {"OSRC_C0", (CAST)F_OSRC_C0, 2, 0}, 1257 {"OSRC_R0", (CAST)F_OSRC_R0, 2, 0}, 1258 {"OSRC_Aj", (CAST)F_OSRC_Aj, 3, 0}, 1259 {"OSRC_Bj", (CAST)F_OSRC_Bj, 3, 0}, 1260 1261 {"pnm" , (CAST)F_pnm , 0, 3 }, 1262 {"unm" , (CAST)F_unm , 0, 3 }, 1263 {"snm" , (CAST)F_snm , 0, 3 }, 1264 {"Xnm" , (CAST)F_Xnm , 0, 5 }, 1265 {"Ynm" , (CAST)F_Ynm , 0, 5 }, 1266 {"Znm" , (CAST)F_Znm , 0, 5 }, 1267 {"Mnm" , (CAST)F_Mnm , 0, 5 }, 1268 {"Nnm" , (CAST)F_Nnm , 0, 5 }, 1269 1270 {"DyadGreenHom" , (CAST)F_DyadGreenHom , 0, 6 }, 1271 {"CurlDyadGreenHom" , (CAST)F_CurlDyadGreenHom , 0, 6 }, 1272 1273 // F_PeWe 1274 {"ElastodynamicsCylinderCavity", (CAST)F_ElastodynamicsCylinderCavity, 5, 1}, 1275 {"ElastodynamicsCylinderWall", (CAST)F_ElastodynamicsCylinderWall, 5, 1}, 1276 {"ElastodynamicsCylinderWallS", (CAST)F_ElastodynamicsCylinderWallS, 5, 1}, 1277 {"ElastodynamicsCylinderWallOut", (CAST)F_ElastodynamicsCylinderWallOut, 5, 1}, 1278 {"ElastodynamicsCylinderWallsOut", (CAST)F_ElastodynamicsCylinderWallsOut, 5, 1}, 1279 {"ElastoCylinderWallOutAbc",(CAST)F_ElastoCylinderWallOutAbc, 6, 1}, 1280 {"ElastoCylinderWallsOutAbc",(CAST)F_ElastoCylinderWallsOutAbc, 6, 1}, 1281 {"ElastoCylinderWallOutAbc2",(CAST)F_ElastoCylinderWallOutAbc2, 6, 1}, 1282 {"ElastoCylinderWallOutAbc2Pade",(CAST)F_ElastoCylinderWallOutAbc2Pade, 10, 1}, 1283 {"ElastoCylinderWallsOutAbc2Pade",(CAST)F_ElastoCylinderWallsOutAbc2Pade, 10, 1}, 1284 1285 1286 // F_Raytracing: ray tracing functions 1287 {"CylinderPhase", (CAST)F_CylinderPhase, 0, 1 }, 1288 {"DiamondPhase", (CAST)F_DiamondPhase, 0, 1 }, 1289 1290 // F_BiotSavart 1291 {"BiotSavart", (CAST)F_BiotSavart , 1, 0 }, 1292 {"Pocklington", (CAST)F_Pocklington , 2, 0 }, 1293 1294 // F_Gmsh 1295 {"Field", (CAST)F_Field , -1, -1 }, 1296 {"ScalarField", (CAST)F_ScalarField , -1, -1 }, 1297 {"VectorField", (CAST)F_VectorField , -1, -1 }, 1298 {"TensorField", (CAST)F_TensorField , -1, -1 }, 1299 {"ComplexScalarField", (CAST)F_ComplexScalarField, -1, -1 }, 1300 {"ComplexVectorField", (CAST)F_ComplexVectorField, -1, -1 }, 1301 {"ComplexTensorField", (CAST)F_ComplexTensorField, -1, -1 }, 1302 {"GradScalarField", (CAST)F_GradScalarField , -1, -1 }, 1303 {"GradVectorField", (CAST)F_GradVectorField , -1, -1 }, 1304 {"GradComplexScalarField", (CAST)F_GradComplexScalarField, -1, -1 }, 1305 {"GradComplexVectorField", (CAST)F_GradComplexVectorField, -1, -1 }, 1306 {"Distance", (CAST)F_Distance , 1, 1 }, 1307 1308 // F_DiffGeom 1309 {"Hodge", (CAST)F_Hodge , 1, 2 }, 1310 {"Sharp", (CAST)F_Sharp , 1, 2 }, 1311 {"Flat", (CAST)F_Flat , 1, 2 }, 1312 {"InnerProduct", (CAST)F_InnerProduct , 1, 3 }, 1313 {"WedgeProduct", (CAST)F_WedgeProduct , 2, 2 }, 1314 {"InteriorProduct", (CAST)F_InteriorProduct , 1, 2 }, 1315 {"TensorProduct", (CAST)F_TensorProduct , 0, 2 }, 1316 {"PullBack", (CAST)F_PullBack , 1, 2 }, 1317 {"PullBackMetric", (CAST)F_PullBackMetric , 0, 2 }, 1318 {"PushForward", (CAST)F_PushForward , 1, 2 }, 1319 {"InvPullBack", (CAST)F_InvPullBack , 1, 2 }, 1320 {"InvPushForward", (CAST)F_InvPushForward , 1, 2 }, 1321 1322 // F_Octave 1323 {"Octave", (CAST)F_Octave , -1, -1 }, 1324 1325 // F_Python 1326 {"Python", (CAST)F_Python , -1, -1 }, 1327 1328 // GF_XXX : Green Functions 1329 {"Laplace" , (CAST)GF_Laplace , 1, 0 }, 1330 {"GradLaplace" , (CAST)GF_GradLaplace , 1, 0 }, 1331 {"NPxGradLaplace" , (CAST)GF_NPxGradLaplace , 1, 0 }, 1332 {"NSxGradLaplace" , (CAST)GF_NSxGradLaplace , 1, 0 }, 1333 {"ApproximateLaplace", (CAST)GF_ApproximateLaplace, 2, 0 }, 1334 {"Helmholtz" , (CAST)GF_Helmholtz , 2, 0 }, 1335 {"HelmholtzThinWire" , (CAST)GF_HelmholtzThinWire, 3, 0 }, 1336 {"GradHelmholtz" , (CAST)GF_GradHelmholtz , 2, 0 }, 1337 {"NPxGradHelmholtz" , (CAST)GF_NPxGradHelmholtz , 2, 0 }, 1338 {"NSxGradHelmholtz" , (CAST)GF_NSxGradHelmholtz , 2, 0 }, 1339 1340 {NULL , NULL , 0, 0 } 1341 1342 } ; 1343 1344 struct FunctionXFunction GF_Function[] = { 1345 {(CAST)GF_Laplace , (CAST)GF_LaplacexForm } , 1346 {(CAST)GF_GradLaplace , (CAST)GF_GradLaplacexForm } , 1347 {(CAST)GF_NPxGradLaplace , (CAST)GF_NPxGradLaplacexForm } , 1348 {(CAST)GF_NSxGradLaplace , (CAST)GF_NSxGradLaplacexForm } , 1349 {(CAST)GF_ApproximateLaplace , (CAST)GF_ApproximateLaplacexForm } , 1350 {(CAST)GF_Helmholtz , (CAST)GF_HelmholtzxForm } , 1351 1352 {NULL , NULL } 1353 } ; 1354 1355 #undef CAST 1356 1357 #endif 1358