Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Problems with the initialization of the temperature of the 4 soil layers when using MPAS/NOAHMP.

paulo.kubota

New member
"When I use the NOAHMP surface parameterization, I'm having issues with the initialization of the temperature for the 4 soil layers. Has anyone else experienced the same problem?"
 
"Hi Mduda,
When I use the NOAHMP parameterization, in the first model iteration (itimestep = 1), the 'tslb' temperature at the 4 levels is correct. However, in itimestep = 2, the values appear as 273.16 at all levels."
 
Does the 'tslb' field look correct over the first few timesteps if you use Noah instead of Noah-MP (i.e., setting config_lsm_scheme = 'sf_noah' rather than config_lsm_scheme = 'sf_noahmp'), but making no other changes to the code or input files?
 
When I use the option config_lsm_scheme = 'sf_noah', it works. But the problem occurs when I use config_lsm_scheme = 'sf_noahmp'.

It's the only option I change in the runs.
 
Thanks very much for the plots. It looks like I'm able to reproduce the issue myself, and we'll take a closer look on our side to see what the underlying issue might be.
 
Dear Mduda,
I believe the issue is in the subroutine SoilSnowWaterPhaseChange(noahmp). The value assigned to the variable MassWatIceTmp(LoopInd) is greater than zero for the tropical region. For the tropical region, the value assigned to the variable MassWatIceTmp(LoopInd) should be zero.

The value assigned to MassWatIceTmp(LoopInd) different from zero for the tropical region causes the variable TemperatureSoilSnow(LoopInd) to be equal to ConstFreezePoint.
 
Dear Mduda
The solution for my experiments was to include a modification to the NoahmpDriverMainMod.f90 code described below.
I don't know if this is the best option?

141
142 if ( NoahmpIO%itimestep == 1 ) then
143 do i = NoahmpIO%its, NoahmpIO%ite
144 if ( (NoahmpIO%xland(i)-1.5) >= 0.0 ) then ! open water point
145 if ( NoahmpIO%xice(i) == 1.0 ) print*,' sea-ice at water point, i=',i
146 NoahmpIO%smstav(i) = 1.0
147 NoahmpIO%smstot(i) = 1.0
148 do k = 1, NoahmpIO%nsoil
149 NoahmpIO%smois(i,k) = 1.0
150 NoahmpIO%tslb(i,k) = 273.16
151 enddo
152 else
153 if ( NoahmpIO%xice(i) == 1.0 ) then ! sea-ice case
154 NoahmpIO%smstav(i) = 1.0
155 NoahmpIO%smstot(i) = 1.0
156 do k = 1, NoahmpIO%nsoil
157 NoahmpIO%smois(i,k) = 1.0
158 enddo
159 endif
160 endif
!PK Solution for MONAN experiments
161 do k = 1, NoahmpIO%nsoil
162 if(NoahmpIO%tslb(i,k) > 273.16 )then
163 NoahmpIO%sh2o (i,k) = NoahmpIO%smois(i,k)
164 endif
165 enddo
!PK Solution for MONAN experiments

166 enddo
167 endif ! end of initialization over ocean
168
 
Top