Skip to content

Commit 7a28134

Browse files
Merge branch 'main' of github.com:ISSMteam/ISSM
2 parents da785e1 + 6ee6066 commit 7a28134

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/c/classes/Elements/Element.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5590,26 +5590,30 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/
55905590
parameters->FindParam(&elevation,&N,SmbMappedforcingelevationEnum); _assert_(elevation);
55915591

55925592
//Variables for downscaling
5593-
IssmDouble taparam, dlwrfparam, rhparam, eaparam;
5593+
IssmDouble taparam, dlwrfparam, rhparam, eaparam, pparam;
5594+
IssmDouble pscale = -8400;
55945595
parameters->FindParam(&taparam, Mappedpoint-1, timeinputs, timestepping, dt, SmbTaParamEnum);
55955596
parameters->FindParam(&dlwrfparam, Mappedpoint-1, timeinputs, timestepping, dt, SmbDlwrfParamEnum);
55965597
parameters->FindParam(&eaparam, Mappedpoint-1, timeinputs, timestepping, dt, SmbEAirParamEnum);
5598+
parameters->FindParam(&pparam, Mappedpoint-1, timeinputs, timestepping, dt, SmbPAirParamEnum);
55975599

55985600
//Variables not downscaled
55995601
parameters->FindParam(&V, Mappedpoint-1, timeinputs, timestepping, dt, SmbVParamEnum);
56005602
parameters->FindParam(&dsw, Mappedpoint-1, timeinputs, timestepping, dt, SmbDswrfParamEnum);
56015603
parameters->FindParam(&dswdiff, Mappedpoint-1, timeinputs, timestepping, dt, SmbDswdiffrfParamEnum);
56025604
parameters->FindParam(&P, Mappedpoint-1, timeinputs, timestepping, dt, SmbPParamEnum);
5603-
parameters->FindParam(&pAir, Mappedpoint-1, timeinputs, timestepping, dt, SmbPAirParamEnum);
56045605

56055606
Ta = taparam + (currentsurface - elevation[Mappedpoint-1])*tlapse;
56065607
dlw = fmax(dlwrfparam + (currentsurface - elevation[Mappedpoint-1])*dlwlapse,0.0);
5607-
5608-
//Hold reltive humidity constant and calculte new saturation vapor pressure with the new temperature
5609-
//ea = 100.*10.^(-7.90298 .* (373.16 ./ ta - 1) + 5.02808 .* log10(373.16 ./ ta) - 1.3816E-7 .* (10.^(11.344 .* (1 - ta ./ 373.16))-1)
5610-
// + 8.1328E-3*(10.^(-3.49149.*(373.16./ta-1))-1) + log10(1013.246)).*(rh/100);
5611-
rhparam = fmin( fmax( 100 * eaparam / ( 100*pow(10,(-7.90298 * (373.16 / taparam - 1) + 5.02808 * log10(373.16 / taparam) - 1.3816E-7 * (pow(10,(11.344 * (1 - taparam / 373.16)))-1) + 8.1328E-3*(pow(10,(-3.49149*(373.16/taparam-1)))-1) + log10(1013.246))) ), 0.0), 100.0);
5612-
eAir = ( 100*pow(10,(-7.90298 * (373.16 / Ta - 1) + 5.02808 * log10(373.16 / Ta) - 1.3816E-7 * (pow(10,(11.344 * (1 - Ta / 373.16)))-1) + 8.1328E-3*(pow(10,(-3.49149*(373.16/Ta-1)))-1) + log10(1013.246))) ) * (rhparam/100);
5608+
if (dlwlapse!=0 || tlapse!=0) pAir=pparam*exp((currentsurface - elevation[Mappedpoint-1])/pscale);
5609+
5610+
//Hold reltive humidity constant and calculte new saturation vapor pressure
5611+
//https://cran.r-project.org/web/packages/humidity/vignettes/humidity-measures.html
5612+
//es over ice calculation
5613+
//Ding et al., 2019 after Bolton, 1980
5614+
//ea37 = rh37*100*6.112.*exp((17.67*(t237-273.15))./(t237-29.65));
5615+
rhparam=eaparam/6.112/exp((17.67*(taparam-273.15))/(taparam-29.65));
5616+
eAir=rhparam*6.112*exp((17.67*(Ta-273.15))/(Ta-29.65));
56135617

56145618
xDelete<IssmDouble>(elevation);
56155619
}

test/Archives/Archive258.arch

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)