PISM, A Parallel Ice Sheet Model  stable v0.5
src/base/iceModel_diagnostics.hh
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Friends Defines