|
PISM, A Parallel Ice Sheet Model
stable v0.5
|
00001 // Copyright (C) 2010, 2011, 2012 Constantine Khroulev 00002 // 00003 // This file is part of PISM. 00004 // 00005 // PISM is free software; you can redistribute it and/or modify it under the 00006 // terms of the GNU General Public License as published by the Free Software 00007 // Foundation; either version 2 of the License, or (at your option) any later 00008 // version. 00009 // 00010 // PISM is distributed in the hope that it will be useful, but WITHOUT ANY 00011 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00012 // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00013 // details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with PISM; if not, write to the Free Software 00017 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00018 00019 #ifndef _ICEMODEL_DIAGNOSTICS_H_ 00020 #define _ICEMODEL_DIAGNOSTICS_H_ 00021 00022 #include "iceModel.hh" 00023 #include "PISMDiagnostic.hh" 00024 00026 class IceModel_hardav : public PISMDiag<IceModel> 00027 { 00028 public: 00029 IceModel_hardav(IceModel *m, IceGrid &g, PISMVars &my_vars); 00030 virtual PetscErrorCode compute(IceModelVec* &result); 00031 }; 00032 00034 class IceModel_rank : public PISMDiag<IceModel> 00035 { 00036 public: 00037 IceModel_rank(IceModel *m, IceGrid &g, PISMVars &my_vars); 00038 virtual PetscErrorCode compute(IceModelVec* &result); 00039 }; 00040 00042 class IceModel_cts : public PISMDiag<IceModel> 00043 { 00044 public: 00045 IceModel_cts(IceModel *m, IceGrid &g, PISMVars &my_vars); 00046 virtual PetscErrorCode compute(IceModelVec* &result); 00047 }; 00048 00050 class IceModel_proc_ice_area : public PISMDiag<IceModel> 00051 { 00052 public: 00053 IceModel_proc_ice_area(IceModel *m, IceGrid &g, PISMVars &my_vars); 00054 virtual PetscErrorCode compute(IceModelVec* &result); 00055 }; 00056 00058 class IceModel_temp : public PISMDiag<IceModel> 00059 { 00060 public: 00061 IceModel_temp(IceModel *m, IceGrid &g, PISMVars &my_vars); 00062 virtual PetscErrorCode compute(IceModelVec* &result); 00063 }; 00064 00067 class IceModel_temp_pa : public PISMDiag<IceModel> 00068 { 00069 public: 00070 IceModel_temp_pa(IceModel *m, IceGrid &g, PISMVars &my_vars); 00071 virtual PetscErrorCode compute(IceModelVec* &result); 00072 }; 00073 00075 class IceModel_temppabase : public PISMDiag<IceModel> 00076 { 00077 public: 00078 IceModel_temppabase(IceModel *m, IceGrid &g, PISMVars &my_vars); 00079 virtual PetscErrorCode compute(IceModelVec* &result); 00080 }; 00081 00083 class IceModel_enthalpysurf : public PISMDiag<IceModel> 00084 { 00085 public: 00086 IceModel_enthalpysurf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00087 virtual PetscErrorCode compute(IceModelVec* &result); 00088 }; 00089 00091 class IceModel_enthalpybase : public PISMDiag<IceModel> 00092 { 00093 public: 00094 IceModel_enthalpybase(IceModel *m, IceGrid &g, PISMVars &my_vars); 00095 virtual PetscErrorCode compute(IceModelVec* &result); 00096 }; 00097 00099 class IceModel_tempbase : public PISMDiag<IceModel> 00100 { 00101 public: 00102 IceModel_tempbase(IceModel *m, IceGrid &g, PISMVars &my_vars); 00103 virtual PetscErrorCode compute(IceModelVec* &result); 00104 }; 00105 00107 class IceModel_tempsurf : public PISMDiag<IceModel> 00108 { 00109 public: 00110 IceModel_tempsurf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00111 virtual PetscErrorCode compute(IceModelVec* &result); 00112 }; 00113 00115 class IceModel_liqfrac : public PISMDiag<IceModel> 00116 { 00117 public: 00118 IceModel_liqfrac(IceModel *m, IceGrid &g, PISMVars &my_vars); 00119 virtual PetscErrorCode compute(IceModelVec* &result); 00120 }; 00121 00123 class IceModel_tempicethk : public PISMDiag<IceModel> 00124 { 00125 public: 00126 IceModel_tempicethk(IceModel *m, IceGrid &g, PISMVars &my_vars); 00127 virtual PetscErrorCode compute(IceModelVec* &result); 00128 }; 00130 class IceModel_tempicethk_basal : public PISMDiag<IceModel> 00131 { 00132 public: 00133 IceModel_tempicethk_basal(IceModel *m, IceGrid &g, PISMVars &my_vars); 00134 virtual PetscErrorCode compute(IceModelVec* &result); 00135 }; 00136 00138 class IceModel_ivol : public PISMTSDiag<IceModel> 00139 { 00140 public: 00141 IceModel_ivol(IceModel *m, IceGrid &g, PISMVars &my_vars); 00142 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00143 }; 00144 00146 class IceModel_slvol : public PISMTSDiag<IceModel> 00147 { 00148 public: 00149 IceModel_slvol(IceModel *m, IceGrid &g, PISMVars &my_vars); 00150 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00151 }; 00152 00154 class IceModel_divoldt : public PISMTSDiag<IceModel> 00155 { 00156 public: 00157 IceModel_divoldt(IceModel *m, IceGrid &g, PISMVars &my_vars); 00158 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00159 }; 00160 00162 class IceModel_iarea : public PISMTSDiag<IceModel> 00163 { 00164 public: 00165 IceModel_iarea(IceModel *m, IceGrid &g, PISMVars &my_vars); 00166 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00167 }; 00168 00170 class IceModel_imass : public PISMTSDiag<IceModel> 00171 { 00172 public: 00173 IceModel_imass(IceModel *m, IceGrid &g, PISMVars &my_vars); 00174 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00175 }; 00176 00178 class IceModel_dimassdt : public PISMTSDiag<IceModel> 00179 { 00180 public: 00181 IceModel_dimassdt(IceModel *m, IceGrid &g, PISMVars &my_vars); 00182 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00183 }; 00184 00186 class IceModel_ivoltemp : public PISMTSDiag<IceModel> 00187 { 00188 public: 00189 IceModel_ivoltemp(IceModel *m, IceGrid &g, PISMVars &my_vars); 00190 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00191 }; 00192 00194 class IceModel_ivoltempf : public PISMTSDiag<IceModel> 00195 { 00196 public: 00197 IceModel_ivoltempf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00198 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00199 }; 00200 00202 class IceModel_ivolcold : public PISMTSDiag<IceModel> 00203 { 00204 public: 00205 IceModel_ivolcold(IceModel *m, IceGrid &g, PISMVars &my_vars); 00206 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00207 }; 00208 00210 class IceModel_ivolcoldf : public PISMTSDiag<IceModel> 00211 { 00212 public: 00213 IceModel_ivolcoldf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00214 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00215 }; 00216 00218 class IceModel_iareatemp : public PISMTSDiag<IceModel> 00219 { 00220 public: 00221 IceModel_iareatemp(IceModel *m, IceGrid &g, PISMVars &my_vars); 00222 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00223 }; 00224 00226 class IceModel_iareatempf : public PISMTSDiag<IceModel> 00227 { 00228 public: 00229 IceModel_iareatempf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00230 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00231 }; 00232 00234 class IceModel_iareacold : public PISMTSDiag<IceModel> 00235 { 00236 public: 00237 IceModel_iareacold(IceModel *m, IceGrid &g, PISMVars &my_vars); 00238 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00239 }; 00240 00242 class IceModel_iareacoldf : public PISMTSDiag<IceModel> 00243 { 00244 public: 00245 IceModel_iareacoldf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00246 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00247 }; 00248 00250 class IceModel_ienthalpy : public PISMTSDiag<IceModel> 00251 { 00252 public: 00253 IceModel_ienthalpy(IceModel *m, IceGrid &g, PISMVars &my_vars); 00254 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00255 }; 00256 00258 class IceModel_iareag : public PISMTSDiag<IceModel> 00259 { 00260 public: 00261 IceModel_iareag(IceModel *m, IceGrid &g, PISMVars &my_vars); 00262 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00263 }; 00264 00266 class IceModel_iareaf : public PISMTSDiag<IceModel> 00267 { 00268 public: 00269 IceModel_iareaf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00270 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00271 }; 00272 00274 class IceModel_ivolg : public PISMTSDiag<IceModel> 00275 { 00276 public: 00277 IceModel_ivolg(IceModel *m, IceGrid &g, PISMVars &my_vars); 00278 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00279 }; 00280 00282 class IceModel_ivolf : public PISMTSDiag<IceModel> 00283 { 00284 public: 00285 IceModel_ivolf(IceModel *m, IceGrid &g, PISMVars &my_vars); 00286 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00287 }; 00288 00290 class IceModel_dt : public PISMTSDiag<IceModel> 00291 { 00292 public: 00293 IceModel_dt(IceModel *m, IceGrid &g, PISMVars &my_vars); 00294 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00295 }; 00296 00298 class IceModel_max_diffusivity : public PISMTSDiag<IceModel> 00299 { 00300 public: 00301 IceModel_max_diffusivity(IceModel *m, IceGrid &g, PISMVars &my_vars); 00302 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00303 }; 00304 00306 class IceModel_surface_flux : public PISMTSDiag<IceModel> 00307 { 00308 public: 00309 IceModel_surface_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00310 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00311 }; 00312 00314 class IceModel_cumulative_surface_flux : public PISMTSDiag<IceModel> 00315 { 00316 public: 00317 IceModel_cumulative_surface_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00318 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00319 }; 00320 00322 class IceModel_basal_flux : public PISMTSDiag<IceModel> 00323 { 00324 public: 00325 IceModel_basal_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00326 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00327 }; 00328 00330 class IceModel_cumulative_basal_flux : public PISMTSDiag<IceModel> 00331 { 00332 public: 00333 IceModel_cumulative_basal_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00334 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00335 }; 00336 00338 class IceModel_sub_shelf_flux : public PISMTSDiag<IceModel> 00339 { 00340 public: 00341 IceModel_sub_shelf_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00342 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00343 }; 00344 00346 class IceModel_cumulative_sub_shelf_flux : public PISMTSDiag<IceModel> 00347 { 00348 public: 00349 IceModel_cumulative_sub_shelf_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00350 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00351 }; 00352 00355 class IceModel_nonneg_flux : public PISMTSDiag<IceModel> 00356 { 00357 public: 00358 IceModel_nonneg_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00359 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00360 }; 00361 00364 class IceModel_cumulative_nonneg_flux : public PISMTSDiag<IceModel> 00365 { 00366 public: 00367 IceModel_cumulative_nonneg_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00368 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00369 }; 00370 00372 class IceModel_ocean_kill_flux : public PISMTSDiag<IceModel> 00373 { 00374 public: 00375 IceModel_ocean_kill_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00376 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00377 }; 00378 00380 class IceModel_cumulative_ocean_kill_flux : public PISMTSDiag<IceModel> 00381 { 00382 public: 00383 IceModel_cumulative_ocean_kill_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00384 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00385 }; 00386 00388 class IceModel_float_kill_flux : public PISMTSDiag<IceModel> 00389 { 00390 public: 00391 IceModel_float_kill_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00392 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00393 }; 00394 00396 class IceModel_cumulative_float_kill_flux : public PISMTSDiag<IceModel> 00397 { 00398 public: 00399 IceModel_cumulative_float_kill_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00400 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00401 }; 00402 00404 class IceModel_discharge_flux : public PISMTSDiag<IceModel> 00405 { 00406 public: 00407 IceModel_discharge_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00408 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00409 }; 00410 00412 class IceModel_cumulative_discharge_flux : public PISMTSDiag<IceModel> 00413 { 00414 public: 00415 IceModel_cumulative_discharge_flux(IceModel *m, IceGrid &g, PISMVars &my_vars); 00416 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00417 }; 00418 00420 class IceModel_acab_cumulative : public PISMDiag<IceModel> 00421 { 00422 public: 00423 IceModel_acab_cumulative(IceModel *m, IceGrid &g, PISMVars &my_vars); 00424 virtual PetscErrorCode compute(IceModelVec* &result); 00425 }; 00426 00428 class IceModel_dHdt : public PISMDiag<IceModel> 00429 { 00430 public: 00431 IceModel_dHdt(IceModel *m, IceGrid &g, PISMVars &my_vars); 00432 virtual PetscErrorCode compute(IceModelVec* &result); 00433 virtual PetscErrorCode update_cumulative(); 00434 protected: 00435 IceModelVec2S last_ice_thickness; 00436 PetscReal last_report_time; 00437 }; 00438 00440 class IceModel_max_hor_vel : public PISMTSDiag<IceModel> 00441 { 00442 public: 00443 IceModel_max_hor_vel(IceModel *m, IceGrid &g, PISMVars &my_vars); 00444 virtual PetscErrorCode update(PetscReal a, PetscReal b); 00445 }; 00446 00447 00448 #endif /* _ICEMODEL_DIAGNOSTICS_H_ */ 00449
1.7.5.1