Opened 9 years ago
Closed 8 years ago
#147 closed defect (fixed)
Pb in calculation of pcapa, pcapa_en and pkappa
Reported by: | jgipsl | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | Anthropogenic processes | Version: | |
Keywords: | Cc: |
Description
In the trunk today rev[2247] and since long-time (the same is found in tag 1_9_5), the variables pcapa, pcapa_en and pkappa are calculated only for the levels 1:ngrnd-2. Why? See here thermosoil rev 2247.
See here the corresponding lines for the calculation. The calculations are now in subroutine thermosoil_getdiff_old_thermix_with_snow since r[222] called from thermsoil_coef. Before the same lines where performed directly in thermosoil_coef.
! Computation of the soil thermal properties; snow properties are also accounted for DO ji = 1,kjpindex snow_h(ji) = snow(ji) / sn_dens IF ( snow_h(ji) .GT. zz_coef(1) ) THEN pcapa(ji,1) = sn_capa pcapa_en(ji,1) = sn_capa pkappa(ji,1) = sn_cond ELSE IF ( snow_h(ji) .GT. zero ) THEN pcapa_en(ji,1) = sn_capa zx1(ji) = snow_h(ji) / zz_coef(1) zx2(ji) = ( zz_coef(1) - snow_h(ji)) / zz_coef(1) pcapa(ji,1) = zx1(ji) * sn_capa + zx2(ji) * so_capa_wet pkappa(ji,1) = un / ( zx1(ji) / sn_cond + zx2(ji) / so_cond_wet ) ELSE pcapa(ji,1) = so_capa_dry + shum_ngrnd_perma(ji,1)*(so_capa_wet - so_capa_dry) pkappa(ji,1) = so_cond_dry + shum_ngrnd_perma(ji,1)*(so_cond_wet - so_cond_dry) pcapa_en(ji,1) = so_capa_dry + shum_ngrnd_perma(ji,1)*(so_capa_wet - so_capa_dry) ENDIF ! DO jg = 2, ngrnd - 2 IF ( snow_h(ji) .GT. zz_coef(jg) ) THEN pcapa(ji,jg) = sn_capa pkappa(ji,jg) = sn_cond pcapa_en(ji,jg) = sn_capa ELSE IF ( snow_h(ji) .GT. zz_coef(jg-1) ) THEN zx1(ji) = (snow_h(ji) - zz_coef(jg-1)) / (zz_coef(jg) - zz_coef(jg-1)) zx2(ji) = ( zz_coef(jg) - snow_h(ji)) / (zz_coef(jg) - zz_coef(jg-1)) pcapa(ji,jg) = zx1(ji) * sn_capa + zx2(ji) * so_capa_wet pkappa(ji,jg) = un / ( zx1(ji) / sn_cond + zx2(ji) / so_cond_wet ) pcapa_en(ji,jg) = sn_capa ELSE pcapa(ji,jg) = so_capa_dry + shum_ngrnd_perma(ji,jg)*(so_capa_wet - so_capa_dry) pkappa(ji,jg) = so_cond_dry + shum_ngrnd_perma(ji,jg)*(so_cond_wet - so_cond_dry) pcapa_en(ji,jg) = so_capa_dry + shum_ngrnd_perma(ji,jg)*(so_capa_wet - so_capa_dry) ENDIF ENDDO ENDDO ! DO ji = 1,kjpindex
Note also that in the initialization part, in thermosoil_var_init, the same variables are calculated differently for all 1:ngrnd levels. This is the reason why the code don't stop with error of non initialization.
Proposed solution :
I don't see the reason why the second DO loop can not go up to 2:ngrnd. zz_coef is calcalated for all 1:ngrnd levels.
Change History (4)
comment:1 Changed 9 years ago by jpolcher
comment:2 Changed 9 years ago by jgipsl
comment:3 Changed 8 years ago by jgipsl
Jan Polcher said, 2 oct 2014:
The last 2 layers must not be filled with snow. Do the following:
DO jg = ngrnd - 1, ngrnd pcapa(ji,jg) = so_capa_dry pkappa(ji,jg) = so_cond_dry pcapa_en(ji,jg) = so_capa_dry END DO
comment:4 Changed 8 years ago by jgipsl
- Resolution set to fixed
- Status changed from new to closed
Done in trunk rev [2405]
I think there is a need to simplify and clean-up the code here in order to eliminate this and probably as well other bugs.
I am convinced that among all the variables in the restart today, some are of the old timestep and thus destroying the 1+1=2 test.