| 86 | |
| 87 | |
| 88 | BilinearForm :: |
| 89 | BilinearForm (shared_ptr<FESpace> afespace, |
| 90 | const string & aname, |
| 91 | const Flags & flags) |
| 92 | : NGS_Object(afespace->GetMeshAccess(), flags, aname), fespace(afespace) |
| 93 | { |
| 94 | fespace2 = NULL; |
| 95 | |
| 96 | multilevel = true; |
| 97 | symmetric = flags.GetDefineFlag ("symmetric"); |
| 98 | |
| 99 | // low_order_bilinear_form = NULL; |
| 100 | linearform = NULL; |
| 101 | |
| 102 | |
| 103 | SetGalerkin( flags.GetDefineFlag( "project" ) ); |
| 104 | SetNonAssemble (flags.GetDefineFlag ("nonassemble")); |
| 105 | SetDiagonal (flags.GetDefineFlag ("diagonal")); |
| 106 | if (flags.GetDefineFlag ("nonsym")) SetSymmetric (0); |
| 107 | if (flags.GetDefineFlag ("nonmultilevel")) SetMultiLevel (0); |
| 108 | SetHermitean (flags.GetDefineFlag ("hermitean")); |
| 109 | SetHermitean (flags.GetDefineFlag ("hermitian")); |
| 110 | SetUnusedDiag (flags.GetNumFlag ("unuseddiag",0.0)); |
| 111 | SetEpsRegularization (flags.GetNumFlag ("regularization",0)); |
| 112 | |
| 113 | SetPrint (flags.GetDefineFlag ("print")); |
| 114 | SetPrintElmat (flags.GetDefineFlag ("printelmat")); |
| 115 | SetElmatEigenValues (flags.GetDefineFlag ("elmatev")); |
| 116 | SetTiming (flags.GetDefineFlag ("timing")); |
| 117 | SetEliminateInternal (flags.GetDefineFlag ("eliminate_internal") || flags.GetDefineFlag("condense")); |
| 118 | |
| 119 | |
| 120 | bool has_private_space = false; |
| 121 | fespace->TraverseTree([&has_private_space](const FESpace& fes) { |
| 122 | if (dynamic_cast<const HiddenFESpace*>(&fes)) |
| 123 | has_private_space = true; |
| 124 | }); |
| 125 | SetEliminateHidden(has_private_space); |
| 126 | if (!flags.GetDefineFlagX("eliminate_hidden").IsMaybe()) |
| 127 | SetEliminateHidden (flags.GetDefineFlag ("eliminate_hidden")); |
| 128 | |
| 129 | |
| 130 | SetKeepInternal (eliminate_internal && |
| 131 | !flags.GetDefineFlagX ("keep_internal").IsFalse() && |
| 132 | !flags.GetDefineFlag ("nokeep_internal")); |
| 133 | SetStoreInner (flags.GetDefineFlag ("store_inner")); |
| 134 | precompute = flags.GetDefineFlag ("precompute"); |
| 135 | checksum = flags.GetDefineFlag ("checksum"); |
| 136 | spd = flags.GetDefineFlag ("spd"); |
| 137 | geom_free = flags.GetDefineFlag("geom_free"); |
| 138 | matrix_free_bdb = flags.GetDefineFlag("matrix_free_bdb"); |
| 139 | nonlinear_matrix_free_bdb = flags.GetDefineFlag("nonlinear_matrix_free_bdb"); |
| 140 | if (spd) symmetric = true; |
| 141 | SetCheckUnused (!flags.GetDefineFlagX("check_unused").IsFalse()); |
| 142 | if (flags.NumFlagDefined("delete_zero_elements")) |
| 143 | delete_zero_elements = flags.GetNumFlag("delete_zero_elements", 0.0); |
| 144 | } |
| 145 |
nothing calls this directly
no test coverage detected