Changeset 22429
- Timestamp:
- 02/16/18 11:12:12 (7 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r22349 r22429 2786 2786 2787 2787 /*Snow grain metamorphism:*/ 2788 if(isgraingrowth)grainGrowth( re, gdn,gsp, T, dz, d, W, smb_dt, m, aIdx,this->Sid());2788 if(isgraingrowth)grainGrowth(&re, &gdn, &gsp, T, dz, d, W, smb_dt, m, aIdx,this->Sid()); 2789 2789 2790 2790 /*Snow, firn and ice albedo:*/ 2791 if(isalbedo)albedo( a,aIdx,re,d,cldFrac,aIce, aSnow,T,W,P,EC,t0wet,t0dry,K,smb_dt,rho_ice,m,this->Sid());2791 if(isalbedo)albedo(&a,aIdx,re,d,cldFrac,aIce, aSnow,T,W,P,EC,t0wet,t0dry,K,smb_dt,rho_ice,m,this->Sid()); 2792 2792 2793 2793 … … 2799 2799 2800 2800 /*Thermal profile computation:*/ 2801 if(isthermal)thermo(&EC, T, dz, d, swf, dlw, Ta, V, eAir, pAir, W[0], smb_dt, m, Vz, Tz,rho_ice,this->Sid());2801 if(isthermal)thermo(&EC, &T, dz, d, swf, dlw, Ta, V, eAir, pAir, W[0], smb_dt, m, Vz, Tz,rho_ice,this->Sid()); 2802 2802 2803 2803 /*Change in thickness of top cell due to evaporation/condensation assuming same density as top cell. … … 2813 2813 2814 2814 /*Allow non-melt densification and determine compaction [m]*/ 2815 if(isdensification)densification( d,dz, T, re, denIdx, C, smb_dt, Tmean,rho_ice,m,this->Sid());2815 if(isdensification)densification(&d,&dz, T, re, denIdx, C, smb_dt, Tmean,rho_ice,m,this->Sid()); 2816 2816 2817 2817 /*Calculate upward longwave radiation flux [W m-2] not used in energy balance. Calculated for every -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
r22249 r22429 147 147 148 148 } /*}}}*/ 149 void grainGrowth(IssmDouble* re, IssmDouble* gdn, IssmDouble*gsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx,int sid){ /*{{{*/149 void grainGrowth(IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx,int sid){ /*{{{*/ 150 150 151 151 /*Created by: Alex S. Gardner, University of Alberta … … 191 191 IssmDouble Q=0.0; 192 192 193 /*output: */ 194 IssmDouble* re=NULL; 195 IssmDouble* gdn=NULL; 196 IssmDouble* gsp=NULL; 197 193 198 if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_(" grain growth module\n"); 199 200 /*Recover pointers: */ 201 re=*pre; 202 gdn=*pgdn; 203 gsp=*pgsp; 194 204 195 205 /*only when aIdx = 1 or 2 do we run grainGrowth: */ … … 321 331 xDelete<IssmDouble>(lwc); 322 332 333 /*Assign output pointers:*/ 334 *pre=re; 335 *pgdn=gdn; 336 *pgsp=gsp; 337 323 338 } /*}}}*/ 324 void albedo(IssmDouble* 339 void albedo(IssmDouble** pa, int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* TK, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m,int sid) { /*{{{*/ 325 340 326 341 //// Calculates Snow, firn and ice albedo as a function of: … … 366 381 // [273 272.5 ... 265], [0 0.001 ... 0], 0, 0.01, 15, 15, 7, 3600) 367 382 383 /*output: */ 384 IssmDouble* a=NULL; 385 368 386 if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_(" albedo module\n"); 387 388 /*Recover pointers: */ 389 a=*pa; 369 390 370 391 //some constants: … … 471 492 else if (a[0] < 0) _printf_("albedo is negative\n"); 472 493 else if (xIsNan(a[0])) _error_("albedo == NAN\n"); 494 495 /*Assign output pointers:*/ 496 *pa=a; 497 473 498 } /*}}}*/ 474 void thermo(IssmDouble* pEC, IssmDouble* 499 void thermo(IssmDouble* pEC, IssmDouble** pT, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid) { /*{{{*/ 475 500 476 501 /* ENGLACIAL THERMODYNAMICS*/ … … 544 569 /*outputs:*/ 545 570 IssmDouble EC=0.0; 571 IssmDouble* T=NULL; 546 572 547 573 if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_(" thermal module\n"); 574 575 /*Recover pointers: */ 576 T=*pT; 548 577 549 578 ds = d[0]; // density of top grid cell … … 626 655 627 656 // determine minimum acceptable delta t (diffusion number > 1/2) [s] 657 // NS: 2.16.18 divided dt by 9 for stability (changed 3 to 27) 628 658 dt=1e12; 629 for(int i=0;i<m;i++)dt = fmin(dt,CI * pow(dz[i],2) * d[i] / ( 3* K[i]));659 for(int i=0;i<m;i++)dt = fmin(dt,CI * pow(dz[i],2) * d[i] / (27 * K[i])); 630 660 631 661 // smallest possible even integer of 60 min where diffusion number > 1/2 … … 833 863 /*Assign output pointers:*/ 834 864 *pEC=EC; 865 *pT=T; 835 866 836 867 } /*}}}*/ … … 1754 1785 1755 1786 } /*}}}*/ 1756 void densification(IssmDouble* d,IssmDouble*dz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid){ /*{{{*/1787 void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid){ /*{{{*/ 1757 1788 1758 1789 //// THIS NEEDS TO BE DOUBLE CHECKED AS THERE SEAMS TO BE LITTLE DENSIFICATION IN THE MODEL OUTOUT [MAYBE COMPATION IS COMPNSATED FOR BY TRACES OF SNOW???] … … 1806 1837 IssmDouble c1=0.0; 1807 1838 IssmDouble H=0.0; 1839 1840 /*output: */ 1841 IssmDouble* dz=NULL; 1842 IssmDouble* d=NULL; 1808 1843 1809 1844 if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_(" densification module\n"); 1845 1846 /*Recover pointers: */ 1847 dz=*pdz; 1848 d=*pd; 1810 1849 1811 1850 // initial mass … … 1878 1917 xDelete<IssmDouble>(obp); 1879 1918 1919 /*Assign output pointers:*/ 1920 *pdz=dz; 1921 *pd=d; 1922 1880 1923 } /*}}}*/ 1881 1924 void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid){ /*{{{*/ -
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
r22249 r22429 24 24 void GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY); 25 25 IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT); 26 void grainGrowth(IssmDouble* pre, IssmDouble* pgdn, IssmDouble* pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid);27 void albedo(IssmDouble* a,int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m, int sid);26 void grainGrowth(IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid); 27 void albedo(IssmDouble** a,int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, IssmDouble dIce, int m, int sid); 28 28 void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, IssmDouble dIce, int m, int sid); 29 void thermo(IssmDouble* pEC, IssmDouble* T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid);29 void thermo(IssmDouble* pEC, IssmDouble** T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid); 30 30 void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, IssmDouble dIce, int sid); 31 31 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); 32 void densification(IssmDouble* d,IssmDouble*dz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid);32 void densification(IssmDouble** pd,IssmDouble** pdz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean, IssmDouble dIce, int m, int sid); 33 33 void turbulentFlux(IssmDouble* pshf, IssmDouble* plhf, IssmDouble* pEC, IssmDouble Ta, IssmDouble Ts, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble ds, IssmDouble Ws, IssmDouble Vz, IssmDouble Tz, IssmDouble dIce, int sid); 34 34 #endif /* _SurfaceMassBalancex_H*/ -
issm/trunk-jpl/test/NightlyRun/test244.m
r22250 r22429 73 73 % nond_sampling study 74 74 md.qmu.method=dakota_method('nond_samp'); 75 md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples', 4,'sample_type','lhs');75 md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),'seed',1234,'samples',3,'sample_type','lhs'); 76 76 dver=textscan(IssmConfig('_DAKOTA_VERSION_'),'%[0123456789].%[0123456789].%[0123456789]'); 77 77 if ((str2num(dver{1}{1})==4 && str2num(dver{2}{1})>2) || str2num(dver{1}{1})>4)
Note:
See TracChangeset
for help on using the changeset viewer.