00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __combinedSystem_hh
00020 #define __combinedSystem_hh
00021
00022 #include "columnSystem.hh"
00023
00025
00032 class combinedSystemCtx : public columnSystemCtx {
00033
00034 public:
00035 combinedSystemCtx(
00036 const NCConfigVariable &config, IceModelVec3 &my_Enth3,
00037 int my_Mz, int my_Mbz);
00038 ~combinedSystemCtx();
00039
00040 PetscErrorCode initAllColumns(
00041 const PetscScalar my_dx, const PetscScalar my_dy,
00042 const PetscScalar my_dtTemp,
00043 const PetscScalar my_dzEQ, const PetscScalar my_dzbEQ);
00044
00045 PetscErrorCode setSchemeParamsThisColumn(
00046 const bool my_ismarginal, const PetscScalar my_lambda);
00047 PetscErrorCode setBoundaryValuesThisColumn(
00048 const PetscScalar my_Enth_surface, const PetscScalar my_Ghf,
00049 const PetscScalar my_Fb);
00050
00051 PetscErrorCode viewConstants(PetscViewer viewer, bool show_col_dependent);
00052
00053 PetscErrorCode solveThisColumn(PetscScalar **x);
00054
00055 public:
00056
00057 PetscScalar *Enth,
00058 *Enth_s,
00059 *u,
00060 *v,
00061 *w,
00062 *Sigma,
00063 *Tb;
00064
00065 private:
00066 PetscInt Mz, Mbz;
00067 PetscScalar ice_rho, ice_c, ice_k, ice_nu,
00068 bed_rho, bed_c, bed_k,
00069 dx, dy, dtTemp, dzEQ, dzbEQ,
00070 nuEQ, iceK, iceRcold, iceRtemp, bedK, bedR;
00071 IceModelVec3 *Enth3;
00072 PetscScalar lambda, Enth_ks, Ghf, Fb;
00073 bool ismarginal;
00074 };
00075
00076 #endif // ifndef __combinedSystem_hh
00077