I’m working on verifying that our fv3-jedi and UFS cycling system is working correctly. Currently I’m trying to track down the update to hydrostatic pressure layer thickness (DELP) from analyzed surface pressure (ps), ak, and bk. Below are some observations and questions.
There used to be code in the fv3-jedi Analysis2Model
VariableChange
to perform the conversion, but it was removed in this commit, in favor of using vader
. So it seems like that variable change is still supported and applied.
I found some related code in VADER, but I do not know if my YAML is set up correctly to use it as desired.
There is a recipe in vader that converts from DELP to ps:
That conversion does not use ak and bk, because they are only needed in the inverse conversion. I did not notice an inverse method in that class though.
There is also a recipe that calculates DELP (air_pressure_thickness) from 3D P on levels (air_pressure_levels):
Also there is this one to convert from ps to air_pressure_levels
:
All of those recipes are listed in the FV3-JEDI cookbook:
However, AirPressureAtInterface_B
is also in the cookbook, which converts from DELP to air_pressure_levels
.
Ultimately what I want is something like what was in the Analysis2Model
variable change originally, calculating DELP from ps, ak, and bk:
!Special case: ps in analysis, delp in model
if (xana%has_field('ps')) then
call xana%get_field('ps', xana_ps)
call xmod%get_field('delp', xmod_delp)
do k = 1,geom%npz
xmod_delp(:,:,k) = (geom%ak(k+1)-geom%ak(k)) + (geom%bk(k+1)-geom%bk(k))*xana_ps(:,:,1)
enddo
failed = .false.
endif
It seems like AirPressureAtInterface_A
followed by AirPressureThickness_A
gets me where I want to be. How do I achieve that in a ConvertState
application yaml? How can I ensure that AirPressureAtInterface_B
is not applied instead of AirPressureAtInterface_A
? If both delp
and ps
are in the input variables and delp
is in the output variables, will that do what I want?
Here is an abbreviated variable change
section of my ConvertState
yaml:
variable change:
variable change name: Analysis2Model
input variables:
- ua
- va
- T
- DELP
- sphum
- ice_wat
- liq_wat
- ps
output variables:
- u
- v
- ua
- va
- T
- delp
- sphum
- ice_wat
- liq_wat
Here is an abbreviated list of my state variables
:
state variables:
- ua
- va
- t
- delp
- ps
- sphum
- ice_wat
- liq_wat