00001 00005 class ErrorNorms 00006 00007 { 00008 private: 00009 00010 static bool sameGrid (GridFE& ga, GridFE& gb); 00011 static bool sameGrid (GridFV& ga, GridFV& gb); 00012 static bool sameGrid (GridLattice& ga, GridLattice& gb); 00013 00014 static real H1Norm_help 00015 ( 00016 FieldFE& pa, 00017 FieldFE& pb, 00018 NumItgPoints itg_pt_tp, 00019 int relative_order 00020 ); 00021 00022 public: 00023 00024 00025 00026 static real H1Norm 00027 ( 00028 FieldFE& pa, 00029 FieldFE& pb, 00030 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00031 int relative_order = 0 00032 ); 00033 static real H1Norm 00034 ( 00035 const FieldFunc& fp, 00036 FieldFE& pb, 00037 real t = DUMMY, 00038 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00039 int relative_order = 0 00040 ); 00041 00042 static void Lnorm 00043 ( 00044 Field& pa, 00045 FieldWithPtValues& pb, 00046 GridFE& pb_grid, 00047 bool same_grid, 00048 real time, 00049 real& norm_L1, 00050 real& norm_L2, 00051 real& norm_Linf, 00052 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00053 int relative_order = 0, 00054 00055 FEM* solver = NULL, 00056 real* norm_energy = NULL 00057 ); 00058 00059 00060 static void Lnorm 00061 (const FieldFunc& fa, FieldFE& pb, real t, real& norm_L1, real& norm_L2, 00062 real& norm_Linf, NumItgPoints itg_pt_tp = GAUSS_POINTS, 00063 int relative_order = 0, FEM* solver = NULL, real* norm_energy = NULL); 00064 00065 00066 static void Lnorm 00067 (const FieldFunc& fa, FieldFE& pb, real t, real& norm_L1, real& norm_L2, 00068 real& norm_Linf, bool isoparametric, NumItgPoints itg_pt_tp = GAUSS_POINTS, 00069 int relative_order = 0, FEM* solver = NULL, real* norm_energy = NULL); 00070 00071 static void Lnorm 00072 (fxtFieldFunc fa, FieldFE& pb, real t, real& norm_L1, real& norm_L2, 00073 real& norm_Linf, NumItgPoints itg_pt_tp = GAUSS_POINTS, 00074 int relative_order = 0, FEM* solver = NULL, real* norm_energy = NULL) 00075 { Lnorm(FieldFunc(fa), pb, t, norm_L1, norm_L2, norm_Linf, itg_pt_tp, 00076 relative_order, solver, norm_energy); } 00077 00078 static real L2Norm (FieldFE& pa, FieldFE& pb); 00079 static void Lnorm 00080 (FieldFE& pa, FieldFE& pb, real& norm_L1, real& norm_L2, real& norm_Linf); 00081 static real L2Norm (const FieldFunc& fa, FieldFE& pb, real t = DUMMY); 00082 static real L2Norm (fxtFieldFunc fa, FieldFE& pb, real t = DUMMY) 00083 { return L2Norm(FieldFunc(fa), pb, t); } 00084 00085 static void errorField (FieldFE& pa, FieldFE& pb, FieldFE& error); 00086 static void errorField (FieldFV& pa, FieldFV& pb, FieldFV& error); 00087 static void errorField (const FieldFunc& pa, FieldFE& pb, real t, 00088 FieldFE& error); 00089 static void errorField (const FieldFunc& pa, FieldFV& pb, real t, 00090 FieldFV& error); 00091 static void errorField (fxtFieldFunc pa, FieldFE& pb, real t, 00092 FieldFE& error) 00093 { errorField(FieldFunc(pa), pb, t, error); } 00094 00095 static void errorField (FieldLattice& pa, FieldLattice& pb, 00096 FieldLattice& error); 00097 static void errorField (const FieldFunc& pa, FieldLattice& pb, real t, 00098 FieldLattice& error); 00099 static void errorField (fxtFieldFunc pa, FieldLattice& pb, real t, 00100 FieldLattice& error) 00101 { errorField(FieldFunc(pa), pb, t, error); } 00102 00103 static void discreteLnorm 00104 ( 00105 FieldFE& pa, 00106 FieldFE& pb, 00107 real& norm_l1, 00108 real& norm_l2, 00109 real& norm_linf 00110 ); 00111 00112 static void discreteLnorm 00113 ( 00114 FieldFV& pa, 00115 FieldFV& pb, 00116 real& norm_l1, 00117 real& norm_l2, 00118 real& norm_linf 00119 ); 00120 00121 static void discreteLnorm 00122 ( 00123 FieldPiWisConst& pa, 00124 FieldFE& pb, 00125 real& norm_l1, 00126 real& norm_l2, 00127 real& norm_linf 00128 ); 00129 00130 static void discreteLnorm 00131 ( 00132 FieldPiWisConst& pa, 00133 FieldPiWisConst& pb, 00134 real& norm_l1, 00135 real& norm_l2, 00136 real& norm_linf 00137 ); 00138 00139 static void discreteLnorm 00140 ( 00141 const FieldFunc& fa, 00142 FieldFE& pb, 00143 real time, 00144 real& norm_l1, 00145 real& norm_l2, 00146 real& norm_linf 00147 ); 00148 00149 static void discreteLnorm 00150 ( 00151 const FieldFunc& fa, 00152 FieldFV& pb, 00153 real time, 00154 real& norm_l1, 00155 real& norm_l2, 00156 real& norm_linf 00157 ); 00158 00159 static void discreteLnorm 00160 ( 00161 const FieldFunc& fa, 00162 FieldFE& pb, 00163 real time, 00164 real& norm_l1, 00165 real& norm_l2, 00166 real& norm_linf, 00167 bool isoparametric 00168 ); 00169 00170 static void discreteLnorm 00171 ( 00172 const FieldFunc& fa, 00173 FieldPiWisConst& pb, 00174 real time, 00175 real& norm_l1, 00176 real& norm_l2, 00177 real& norm_linf 00178 ); 00179 00180 00181 00182 static void Lnorm 00183 ( 00184 Fields & pa, 00185 FieldsWithPtValues& pb, 00186 GridFE& pb_grid, 00187 bool same_grid, 00188 real time, 00189 real& norm_L1, 00190 real& norm_L2, 00191 real& norm_Linf, 00192 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00193 int relative_order = 0 00194 ); 00195 00196 static void Lnorm 00197 (const FieldsFunc& fa, FieldsFE& pb, real t, real& norm_L1, real& norm_L2, 00198 real& norm_Linf, bool isoparametric, NumItgPoints itg_pt_tp = GAUSS_POINTS, 00199 int relative_order = 0, FEM* solver = NULL, real* norm_energy = NULL); 00200 00201 static void errorField (FieldsFE& pa, FieldsFE& pb, FieldsFE& error); 00202 static void errorField (FieldsFV& pa, FieldsFV& pb, FieldsFV& error); 00203 static void errorField (FieldsFunc& pa,FieldsFE& pb,real t,FieldsFE& error); 00204 static void errorField (FieldsFunc& pa,FieldsFV& pb,real t,FieldsFV& error); 00205 00206 static void errorField (FieldsLattice& pa, FieldsLattice& pb, 00207 FieldsLattice& error); 00208 static void errorField (FieldsFunc& pa, FieldsLattice& pb, real t, 00209 FieldsLattice& error); 00210 00211 static void discreteLnorm 00212 ( 00213 FieldsFE& pa, 00214 FieldsFE& pb, 00215 real& norm_l1, 00216 real& norm_l2, 00217 real& norm_linf 00218 ); 00219 00220 static void discreteLnorm 00221 ( 00222 FieldsFV& pa, 00223 FieldsFV& pb, 00224 real& norm_l1, 00225 real& norm_l2, 00226 real& norm_linf 00227 ); 00228 00229 static void discreteLnorm 00230 ( 00231 FieldsFunc& pa, 00232 FieldsFE& pb, 00233 real time, 00234 real& norm_l1, 00235 real& norm_l2, 00236 real& norm_linf, 00237 bool isoparametric 00238 ); 00239 00240 00241 static void discreteLnorm 00242 ( 00243 FieldsPiWisConst& pa, 00244 FieldsFE& pb, 00245 real& norm_l1, 00246 real& norm_l2, 00247 real& norm_linf 00248 ); 00249 00250 static void discreteLorm 00251 ( 00252 FieldsPiWisConst& pa, 00253 FieldsPiWisConst& pb, 00254 real& norm_l1, 00255 real& norm_l2, 00256 real& norm_linf 00257 ); 00258 00259 static void discreteLnorm 00260 ( 00261 FieldsFunc& fa, 00262 FieldsFE& pb, 00263 real time, 00264 real& norm_l1, 00265 real& norm_l2, 00266 real& norm_linf 00267 ); 00268 00269 static void discreteLnorm 00270 ( 00271 FieldsFunc& fa, 00272 FieldsFV& pb, 00273 real time, 00274 real& norm_l1, 00275 real& norm_l2, 00276 real& norm_linf 00277 ); 00278 00279 static void discreteLnorm 00280 ( 00281 FieldsFunc& fa, 00282 FieldsPiWisConst& pb, 00283 real time, 00284 real& norm_l1, 00285 real& norm_l2, 00286 real& norm_linf 00287 ); 00288 00289 static real H1SemiNorm 00290 00291 ( 00292 FieldFunc& fp, 00293 FieldFE& pb, 00294 real t = DUMMY, 00295 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00296 int relative_order = 0 00297 ); 00298 00299 static real H1SemiNorm 00300 ( 00301 FieldsFunc& fp, 00302 FieldsFE& pb, 00303 real t = DUMMY, 00304 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00305 int relative_order = 0 00306 ); 00307 00308 static void HdivNorm 00309 ( 00310 FieldsFunc& fa, 00311 FieldsFE& pb, 00312 real& Hdiv_norm, 00313 real& L2_part, 00314 real& div_part, 00315 real& inf_error, 00316 real t, 00317 bool isoparametric, 00318 bool print_info = false, 00319 NumItgPoints itg_pt_tp = GAUSS_POINTS, 00320 int relative_order = 0, 00321 FEM* solver = NULL, 00322 real* norm_energy = NULL 00323 ); 00324 00325 }; 00326 00327