Changeset 22742
- Timestamp:
- 05/04/18 16:33:13 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
r22736 r22742 1356 1356 for(int i=0;i<n;i++)if(d[i]>dIce-Dtol)d[i]=dIce; 1357 1357 for(int i=0;i<n;i++) dz[i]= m[i]/d[i]; 1358 1358 1359 } 1359 1360 … … 1375 1376 // LF/CI = 159.1342) 1376 1377 surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = fmax(0.0, exsT[i]- LF/CI); 1377 1378 if (cellsum(surpT,n) > 0.0 + Ttol ){1378 1379 if (cellsum(surpT,n) > 0.0 + Ttol ){ 1379 1380 // _printf_("T Surplus"); 1380 1381 // calculate surplus energy 1381 1382 surpE=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpE[i] = surpT[i] * CI * m[i]; 1382 1383 1383 1384 int i = 0; 1384 while (cellsum(surpE,n) > 0.0 + Ttol && i<n-1){ 1385 1385 while (cellsum(surpE,n) > 0.0 + Ttol){ 1386 1386 // use surplus energy to increase the temperature of lower cell 1387 1387 T[i+1] = surpE[i]/m[i+1]/CI + T[i+1]; 1388 surpT[i+1] = fmax(0.0, (T[i+1] - CtoK - LF/CI)); 1388 1389 exsT[i+1] = fmax(0.0, T[i+1] - CtoK) + exsT[i+1]; 1390 T[i+1] = fmin(CtoK, T[i+1]); 1391 1392 surpT[i+1] = fmax(0.0, exsT[i+1] - LF/CI); 1389 1393 surpE[i+1] = surpT[i+1] * CI * m[i+1]; 1390 1394 1391 1395 // adjust current cell properties (again 159.1342 is the max T) 1392 T[i] = T[i]-surpE[i]/m[i+1]/CI;1396 exsT[i] = LF/CI; 1393 1397 surpE[i] = 0.0; 1394 1398 i = i + 1; 1395 1399 } 1396 // recalculate temperature excess above 0 deg C1397 for(int i=0;i<n;i++) exsT[i] = fmax(0.0, T[i] - CtoK);1398 1400 } 1399 1401
Note:
See TracChangeset
for help on using the changeset viewer.