Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | var_name | |||
type(ESMF_Geom), | intent(in) | :: | geom | |||
type(ModelVerticalGrid), | intent(in) | :: | vgrid | |||
type(StateRegistry), | intent(inout) | :: | registry | |||
integer, | intent(out), | optional | :: | rc |
subroutine setup_(var_name, geom, vgrid, registry, rc) character(*), intent(in) :: var_name type(ESMF_Geom), intent(in) :: geom type(ModelVerticalGrid), intent(in) :: vgrid type(StateRegistry), intent(inout) :: registry integer, optional, intent(out) :: rc type(VerticalDimSpec) :: vertical_dim_spec type(VariableSpec) :: var_spec class(StateItemSpec), allocatable :: fld_spec type(VirtualConnectionPt) :: v_pt type(StateItemExtension), pointer :: extension class(StateItemSpec), pointer :: spec integer :: status select case(var_name) case("PLE") vertical_dim_spec = VERTICAL_DIM_EDGE case("PL") vertical_dim_spec = VERTICAL_DIM_CENTER case default _FAIL("unsupported var name " // var_name) end select var_spec = VariableSpec(& short_name=var_name, & state_intent=ESMF_STATEINTENT_EXPORT, & standard_name="air_pressure", & units="hPa", & vertical_dim_spec=vertical_dim_spec, & default_value=3.) allocate(fld_spec, source=make_itemSpec(var_spec, r, rc=status)); _VERIFY(status) call fld_spec%set_geometry(geom=geom, vertical_grid=vgrid, _RC) v_pt = VirtualConnectionPt(state_intent="export", short_name=var_name) call registry%add_primary_spec(v_pt, fld_spec) extension => registry%get_primary_extension(v_pt, _RC) spec => extension%get_spec() call spec%set_active() call spec%create(_RC) call spec%allocate(_RC) _RETURN(_SUCCESS) end subroutine setup_