Changeset 24204
- Timestamp:
- 10/03/19 17:35:52 (5 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
r24203 r24204 26 26 const double CA = 1005.0; // heat capacity of air (J kg-1 K-1) 27 27 const double R = 8.314; // gas constant (J mol-1 K-1) 28 29 const double Delflag=-99999; 28 30 29 31 void Gembx(FemModel* femmodel){ /*{{{*/ … … 1247 1249 1248 1250 // if d > the density of ice, d = dIce 1249 if (d[0] > dIce +Dtol){1251 if (d[0] > dIce-Dtol){ 1250 1252 d[0] = dIce; // adjust d 1251 1253 dz[0] = mass / d[0]; // dz is adjusted to conserve mass … … 1401 1403 1402 1404 // if pore water froze in ice then adjust d and dz thickness 1403 for(int i=0;i<n;i++)if(d[i]> dIce-Dtol)d[i]=dIce;1405 for(int i=0;i<n;i++)if(d[i]> dIce-Dtol)d[i]=dIce; 1404 1406 for(int i=0;i<n;i++) dz[i]= m[i]/d[i]; 1405 1407 … … 1416 1418 1417 1419 // run melt algorithm if there is melt water or excess pore water 1418 if ((cellsum(exsT,n) > 0.0 + Ttol) || (cellsum(exsW,n) > 0.0 +Wtol)){1420 if ((cellsum(exsT,n) > 0.0+Ttol) || (cellsum(exsW,n) > 0.0+Wtol)){ 1419 1421 // _printf_(""MELT OCCURS"); 1420 1422 // check to see if thermal energy exceeds energy to melt entire cell … … 1424 1426 surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = max(0.0, exsT[i]- LF/CI); 1425 1427 1426 if (cellsum(surpT,n) > 0.0 +Ttol ){1428 if (cellsum(surpT,n) > 0.0+Ttol ){ 1427 1429 // _printf_("T Surplus"); 1428 1430 // calculate surplus energy … … 1430 1432 1431 1433 int i = 0; 1432 while (cellsum(surpE,n) > 0.0 +Ttol){1434 while (cellsum(surpE,n) > 0.0+Ttol){ 1433 1435 // use surplus energy to increase the temperature of lower cell 1434 1436 T[i+1] = surpE[i]/m[i+1]/CI + T[i+1]; … … 1464 1466 X = 0; 1465 1467 for(int i=n-1;i>=0;i--){ 1466 if(M[i]> 0.0+Wtol || exsW[i]>0.0+Wtol){1468 if(M[i]> 0.0+Wtol || exsW[i]> 0.0+Wtol){ 1467 1469 X=i; 1468 1470 break; … … 1521 1523 Wi = (dIce-d[i])* Swi * dz_0; // irreducible water 1522 1524 dW[i] = min(inM - F1, Wi-W[i]); // change in pore water 1523 if (dW[i] < 0.0-Wtol && -1*dW[i]> W[i]-Wtol ){1525 if (dW[i] < 0.0-Wtol && -1*dW[i]> W[i]-Wtol ){ 1524 1526 dW[i]= -1*W[i]; 1525 1527 } … … 1552 1554 1553 1555 //// GRID CELL SPACING AND MODEL DEPTH 1554 for(int i=0;i<n;i++)if (W[i] < 0.0 -Wtol) _error_("negative pore water generated in melt equations");1556 for(int i=0;i<n;i++)if (W[i] < 0.0-Wtol) _error_("negative pore water generated in melt equations"); 1555 1557 1556 1558 // delete all cells with zero mass … … 1562 1564 1563 1565 // delete all cells with zero mass 1564 D_size=0; for(int i=0;i<n;i++)if(m[i]> 0.0)D_size++;1566 D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol))D_size++; 1565 1567 D=xNew<int>(D_size); 1566 D_size=0; for(int i=0;i<n;i++)if(m[i]> 0.0){ D[D_size] = i; D_size++;}1568 D_size=0; for(int i=0;i<n;i++)if(m[i]> (0.0+Wtol)){ D[D_size] = i; D_size++;} 1567 1569 1568 1570 celldelete(&m,n,D,D_size); … … 1642 1644 1643 1645 // set cell to 99999 for deletion 1644 m[i] = -99999;1646 m[i] = Delflag; 1645 1647 } 1646 1648 } … … 1650 1652 //find closest cell to merge with 1651 1653 for(int i=n-2;i>=0;i--){ 1652 if(m[i]!= -99999){1654 if(m[i]!=Delflag){ 1653 1655 X2=i; 1654 1656 X1=n-1; … … 1672 1674 1673 1675 // set cell to 99999 for deletion 1674 m[X2] = -99999;1676 m[X2] = Delflag; 1675 1677 } 1676 1678 1677 1679 // delete combined cells 1678 D_size=0; for(int i=0;i<n;i++)if(m[i] !=-99999)D_size++;1680 D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol)D_size++; 1679 1681 D=xNew<int>(D_size); 1680 D_size=0; for(int i=0;i<n;i++)if(m[i] !=-99999){ D[D_size] = i; D_size++;}1682 D_size=0; for(int i=0;i<n;i++)if(m[i]> Delflag+Wtol){ D[D_size] = i; D_size++;} 1681 1683 1682 1684 celldelete(&m,n,D,D_size); … … 2073 2075 2074 2076 // if V = 0 goes to infinity therfore if V = 0 change 2075 if(V< 0.01-Dtol)V=0.01;2077 if(V< 0.01-Dtol)V=0.01; 2076 2078 2077 2079 // calculate the Bulk Richardson Number (Ri) -
issm/trunk-jpl/test/NightlyRun/test243.m
r24203 r24204 48 48 %Fields and tolerances to track changes 49 49 field_names ={'SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'}; 50 field_tolerances ={1e-11,1e-12,1e-11, 2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11};50 field_tolerances ={1e-11,1e-12,1e-11,8e-10,1e-11,10e-8,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11}; 51 51 52 52 field_values={... -
issm/trunk-jpl/test/NightlyRun/test243.py
r24203 r24204 62 62 #Fields and tolerances to track changes 63 63 field_names = ['SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW'] 64 field_tolerances = [1e-11, 1e-12, 1e-11, 2e-11, 1e-11, 1e-11, 1e-12, 4e-12, 1e-12, 1e-12, 1e-12, 2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11]64 field_tolerances = [1e-11,1e-12,1e-11,8e-10,1e-11,10e-8,1e-12,4e-12,1e-12,1e-12,1e-12,2e-10,2e-11, 2e-11, 1e-11, 2e-9, 2e-11] 65 65 #shape is different in python solution (fixed using reshape) which can cause test failure: 66 66 field_values = [md.results.TransientSolution[-1].SmbDz[0, 0:240].reshape(1, -1), -
issm/trunk-jpl/test/NightlyRun/test252.m
r24191 r24204 59 59 'SmbDz3','SmbT3' ,'SmbD3' ,'SmbRe3','SmbGdn3','SmbGsp3','SmbA3' ,'SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3',... 60 60 'SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4' ,'SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4'}; 61 field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12, 2e-12,1e-12,1e-12,1e-12,1e-11,...62 1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,...63 1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,2e-11,...64 5e-9,1e-12,2e-9,3e-10,1e-11,1e-11,3e-11,1e-11,5e-9,1e-12,1e-12,4e-10};61 field_tolerances ={1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,... 62 1e-11,1e-12,1e-11,2e-11,1e-11,8e-8,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11,... 63 1e-11,1e-12,1e-11,2e-11,1e-11,7e-7,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11,... 64 1e-11,1e-12,1e-11,6e-11,1e-11,9.5e-8,1e-12,1e-12,1e-12,1e-12,1e-12,2e-11}; 65 65 66 66 field_values={... -
issm/trunk-jpl/test/NightlyRun/test252.py
r24191 r24204 71 71 #Fields and tolerances to track changes 72 72 field_names = ['SmbDz1','SmbT1' ,'SmbD1' ,'SmbRe1','SmbGdn1','SmbGsp1','SmbA1' ,'SmbEC1','SmbMassBalance1','SmbMAdd1','SmbDzAdd1','SmbFAC1','SmbDz2','SmbT2','SmbD2' ,'SmbRe2','SmbGdn2','SmbGsp2','SmbA2','SmbEC2','SmbMassBalance2','SmbMAdd2','SmbDzAdd2','SmbFAC2','SmbDz3','SmbT3','SmbD3','SmbRe3','SmbGdn3','SmbGsp3','SmbA3','SmbEC3','SmbMassBalance3','SmbMAdd3','SmbDzAdd3','SmbFAC3','SmbDz4','SmbT4' ,'SmbD4' ,'SmbRe4','SmbGdn4','SmbGsp4','SmbA4','SmbEC4','SmbMassBalance4','SmbMAdd4','SmbDzAdd4','SmbFAC4'] 73 field_tolerances = [1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12, 2e-12,1e-12,1e-12,1e-12,1e-11,74 1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,4e-12,1e-12,1e-12,1e-12,2e-11,75 1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-11,1e-11,1e-12,1e-12,2e-11,76 5e-9,1e-12,2e-9,3e-10,1e-11,1e-11,3e-11,1e-11,5e-9,1e-12,1e-12,4e-10]73 field_tolerances = [1e-11,1e-12,1e-11,2e-11,1e-11,1e-11,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11, 74 1e-11,1e-12,1e-11,2e-11,1e-11,8e-8,1e-12,4e-12,1e-12,1e-12,1e-12,1e-11, 75 1e-11,1e-12,1e-11,2e-11,1e-11,7e-7,1e-12,1e-12,1e-12,1e-12,1e-12,1e-11, 76 1e-11,1e-12,1e-11,6e-11,1e-11,9.5e-8,1e-12,1e-12,1e-12,1e-12,1e-12,2e-11] 77 77 78 78 #shape is different in python solution (fixed using reshape) which can cause test failure:
Note:
See TracChangeset
for help on using the changeset viewer.