|
PISM, A Parallel Ice Sheet Model stable 0.4.1779
|
00001 // Copyright (C) 2004--2011 Jed Brown, Ed Bueler and 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 _SIA_SLIDING_H_ 00020 #define _SIA_SLIDING_H_ 00021 00022 #include "ShallowStressBalance.hh" 00023 00030 class SIA_Sliding : public ShallowStressBalance 00031 { 00032 public: 00033 SIA_Sliding(IceGrid &g, IceBasalResistancePlasticLaw &b, IceFlowLaw &i, EnthalpyConverter &e, 00034 const NCConfigVariable &conf) 00035 : ShallowStressBalance(g, b, i, e, conf) 00036 { 00037 verification_mode = false; 00038 eisII_experiment = ""; 00039 allocate(); 00040 } 00041 virtual ~SIA_Sliding() {} 00042 00043 virtual PetscErrorCode init(PISMVars &vars); 00044 00045 virtual PetscErrorCode update(bool fast); 00046 00047 protected: 00048 virtual PetscErrorCode allocate(); 00049 00050 virtual PetscErrorCode compute_surface_gradient(IceModelVec2Stag &h_x, IceModelVec2Stag &h_y); 00051 00052 virtual PetscErrorCode surface_gradient_eta(IceModelVec2Stag &h_x, IceModelVec2Stag &h_y); 00053 virtual PetscErrorCode surface_gradient_haseloff(IceModelVec2Stag &h_x, IceModelVec2Stag &h_y); 00054 virtual PetscErrorCode surface_gradient_mahaffy(IceModelVec2Stag &h_x, IceModelVec2Stag &h_y); 00055 00056 virtual PetscScalar basalVelocitySIA(PetscScalar /*x*/, PetscScalar /*y*/, 00057 PetscScalar H, PetscScalar T, 00058 PetscScalar /*alpha*/, PetscScalar mu, 00059 PetscScalar min_T) const; 00060 IceModelVec2Int *mask; 00061 IceModelVec2S *thickness, *surface, *bed, work_2d; 00062 IceModelVec3 *enthalpy; 00063 IceModelVec2Stag work_2d_stag[2]; // for the surface gradient 00064 double standard_gravity; 00065 00066 bool verification_mode; 00067 string eisII_experiment; 00068 }; 00069 00070 #endif /* _SIA_SLIDING_H_ */
1.7.3