Changeset 23846
- Timestamp:
- 04/15/19 19:44:09 (6 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r23844 r23846 3241 3241 int swIdx=0; 3242 3242 IssmDouble cldFrac,t0wet, t0dry, K; 3243 IssmDouble ulw=0.0;3244 IssmDouble netSW=0.0;3245 IssmDouble netLW=0.0;3246 3243 IssmDouble lhf=0.0; 3247 3244 IssmDouble shf=0.0; … … 3274 3271 IssmDouble* gsp = NULL; 3275 3272 IssmDouble EC = 0.0; 3273 IssmDouble ulw = 0.0; 3274 IssmDouble netSW=0.0; 3275 IssmDouble netLW=0.0; 3276 IssmDouble netULW=0.0; 3277 IssmDouble netLHF=0.0; 3278 IssmDouble netSHF=0.0; 3276 3279 IssmDouble* W = NULL; 3277 3280 IssmDouble* a = NULL; … … 3523 3526 3524 3527 /*Calculate net shortwave [W m-2]*/ 3525 netSW = cellsum(swf,m);3528 netSW = netSW + cellsum(swf,m); 3526 3529 3527 3530 /*Thermal profile computation:*/ 3528 if(isthermal)thermo(&EC, &T, dz, d, swf, dlw, Ta, V, eAir, pAir, teValue, W[0], smb_dt, m, Vz, Tz, thermo_scaling,rho_ice,this->Sid());3531 if(isthermal)thermo(&EC, &T, &ulw, dz, d, swf, dlw, Ta, V, eAir, pAir, teValue, W[0], smb_dt, m, Vz, Tz, thermo_scaling,rho_ice,this->Sid()); 3529 3532 3530 3533 /*Change in thickness of top cell due to evaporation/condensation assuming same density as top cell. … … 3544 3547 /*Calculate upward longwave radiation flux [W m-2] not used in energy balance. Calculated for every 3545 3548 * sub-time step in thermo equations*/ 3546 ulw = 5.67E-8 * pow(T[0],4.0) * teValue; // + deltatest here3549 //ulw = 5.67E-8 * pow(T[0],4.0) * teValue; // + deltatest here 3547 3550 3548 3551 /*Calculate net longwave [W m-2]*/ 3549 netLW = dlw - ulw; 3552 netULW = netULW + ulw; 3553 netLW = netLW + dlw - ulw; 3550 3554 3551 3555 /*Calculate turbulent heat fluxes [W m-2]*/ … … 3564 3568 << "gsp[" << cellsum(gsp,m) << "] " 3565 3569 << "swf[" << netSW << "] " 3570 << "lwf[" << netLW << "] " 3566 3571 << "a[" << a << "] " 3567 3572 << "te[" << teValue << "] " 3568 3573 << "\n"); 3569 3574 } /*}}}*/ 3575 3576 netLHF = netLHF + lhf; 3577 netSHF = netSHF + shf; 3570 3578 3571 3579 /*Sum component mass changes [kg m-2]*/ … … 3620 3628 this->AddInput(new DoubleInput(SmbRunoffEnum,sumR/dt/rho_ice)); 3621 3629 this->AddInput(new DoubleInput(SmbPrecipitationEnum,sumP/dt/rho_ice)); 3630 this->AddInput(new DoubleInput(SmbNetULWEnum,netULW)); 3631 this->AddInput(new DoubleInput(SmbNetLWEnum,netLW)); 3632 this->AddInput(new DoubleInput(SmbNetSWEnum,netSW)); 3633 this->AddInput(new DoubleInput(SmbNetLHFEnum,netLHF)); 3634 this->AddInput(new DoubleInput(SmbNetSHFEnum,netSHF)); 3622 3635 this->AddInput(new DoubleInput(SmbDzAddEnum,sumdz_add)); 3623 3636 this->AddInput(new DoubleInput(SmbMAddEnum,sumMassAdd/dt)); -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
r23468 r23846 509 509 510 510 } /*}}}*/ 511 void thermo(IssmDouble* pEC, IssmDouble** pT, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid) { /*{{{*/511 void thermo(IssmDouble* pEC, IssmDouble** pT, IssmDouble* pulwrf, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid) { /*{{{*/ 512 512 513 513 /* ENGLACIAL THERMODYNAMICS*/ … … 536 536 // T: grid cell temperature [k] 537 537 // EC: evaporation/condensation [kg] 538 // ulwrf: upward longwave radiation flux [W m-2] 538 539 539 540 /*intermediary: */ … … 583 584 IssmDouble EC=0.0; 584 585 IssmDouble* T=*pT; 586 IssmDouble ulwrf=0.0; 585 587 586 588 if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_(" thermal module\n"); … … 610 612 611 613 // Bulk-transfer coefficient for turbulent fluxes 612 An = pow(0.4,2) / pow(log(Tz/z0),2); // Bulk-transfer coefficient 614 //An = pow(0.4,2) / pow(log(Tz/z0),2); // Bulk-transfer coefficient 615 An = pow(0.4,2) / (log(Tz/z0)*log(Vz/z0)); // Bulk-transfer coefficient 613 616 C = An * dAir * V; // shf & lhf common coefficient 614 617 … … 820 823 821 824 // upward longwave contribution 822 ulw = - (SB * pow(Ts,4.0)* teValue) * dt ; //+20 825 ulw = - (SB * pow(Ts,4.0)* teValue) * dt; // - deltatest here 826 ulwrf = ulwrf - ulw; 827 823 828 dT_ulw = ulw / TCs; 824 829 … … 875 880 *pEC=EC; 876 881 *pT=T; 882 *pulwrf=ulwrf; 877 883 878 884 } /*}}}*/ … … 1939 1945 case 6: // Ligtenberg and others (2011) [semi-emperical], Antarctica 1940 1946 // common variable 1941 H = exp((-60000.0/(Tmean * R)) + (42400.0/(Tmean * R))) * (C * 9.81); 1947 // From literature: H = exp((-60000.0/(Tmean * R)) + (42400.0/(Tmean * R))) * (C * 9.81); 1948 H = exp((-60000.0/(T[i] * R)) + (42400.0/(Tmean * R))) * (C * 9.81); 1942 1949 c0arth = 0.07 * H; 1943 1950 c1arth = 0.03 * H; … … 1952 1959 case 7: // Kuipers Munneke and others (2015) [semi-emperical], Greenland 1953 1960 // common variable 1954 H = exp((-60000.0/(T[i] * R)) + (42400.0/(T[i] * R))) * (C * 9.81); 1961 // From literature: H = exp((-60000.0/(T[i] * R)) + (42400.0/(T[i] * R))) * (C * 9.81); 1962 H = exp((-60000.0/(T[i] * R)) + (42400.0/(Tmean * R))) * (C * 9.81); 1955 1963 c0arth = 0.07 * H; 1956 1964 c1arth = 0.03 * H; … … 2068 2076 2069 2077 //// Bulk-transfer coefficient 2070 An = pow(0.4,2) / pow(log(Tz/z0),2); // Bulk-transfer coefficient 2078 //An = pow(0.4,2) / pow(log(Tz/z0),2); // Bulk-transfer coefficient 2079 An = pow(0.4,2) / (log(Tz/z0)*log(Vz/z0)); // Bulk-transfer coefficient 2071 2080 C = An * d_air * V; // shf & lhf common coefficient 2072 2081 -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
r23814 r23846 31 31 void albedo(IssmDouble** a,int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble aValue, IssmDouble adThresh, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m, int sid); 32 32 void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid); 33 void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid);33 void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* pulwrf, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble teValue, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble thermo_scaling, IssmDouble dIce, int sid); 34 34 void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, int aIdx, int dsnowIdx, IssmDouble Tmean, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble C, IssmDouble V, IssmDouble Vmean, IssmDouble dIce, int sid); 35 35 void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble* pdz_add, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, IssmDouble zTop, IssmDouble dIce, int sid); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r23843 r23846 1135 1135 SmbDzAddEnum, 1136 1136 SmbFACEnum, 1137 SmbNetULWEnum, 1138 SmbNetLWEnum, 1139 SmbNetSWEnum, 1140 SmbNetLHFEnum, 1141 SmbNetSHFEnum, 1137 1142 SMBforcingEnum, 1138 1143 SMBgcmEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r23843 r23846 1139 1139 case SmbDzAddEnum : return "SmbDzAdd"; 1140 1140 case SmbFACEnum : return "SmbFAC"; 1141 case SmbNetULWEnum : return "SmbNetULW"; 1142 case SmbNetLWEnum : return "SmbNetLW"; 1143 case SmbNetSWEnum : return "SmbNetSW"; 1144 case SmbNetLHFEnum : return "SmbNetLHF"; 1145 case SmbNetSHFEnum : return "SmbNetSHF"; 1141 1146 case SMBforcingEnum : return "SMBforcing"; 1142 1147 case SMBgcmEnum : return "SMBgcm"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r23843 r23846 1166 1166 else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum; 1167 1167 else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum; 1168 else if (strcmp(name,"SmbNetULW")==0) return SmbNetULWEnum; 1169 else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum; 1170 else if (strcmp(name,"SmbNetSW")==0) return SmbNetSWEnum; 1171 else if (strcmp(name,"SmbNetLHF")==0) return SmbNetLHFEnum; 1172 else if (strcmp(name,"SmbNetSHF")==0) return SmbNetSHFEnum; 1168 1173 else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum; 1169 1174 else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum; … … 1239 1244 else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum; 1240 1245 else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum; 1241 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 1242 1250 else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum; 1243 1251 else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum; 1244 1252 else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum; 1245 1253 else if (strcmp(name,"MeshZ")==0) return MeshZEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 1254 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 1250 1255 else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum; 1251 1256 else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
Note:
See TracChangeset
for help on using the changeset viewer.