function new_FieldSpec_geom(unusable, geom, vertical_grid, vertical_dim_spec, typekind, ungridded_dims, &
standard_name, long_name, units, &
attributes, regrid_param, horizontal_dims_spec, default_value, accumulation_type, timestep) result(field_spec)
type(FieldSpec), target :: field_spec
class(KeywordEnforcer), optional, intent(in) :: unusable
type(ESMF_Geom), optional, intent(in) :: geom
class(VerticalGrid), optional, intent(in) :: vertical_grid
type(VerticalDimSpec), intent(in) :: vertical_dim_spec
type(ESMF_Typekind_Flag), intent(in) :: typekind
type(UngriddedDims), optional, intent(in) :: ungridded_dims
character(*), optional, intent(in) :: standard_name
character(*), optional, intent(in) :: units
character(*), optional, intent(in) :: long_name
type(StringVector), optional, intent(in) :: attributes
type(EsmfRegridderParam), optional, intent(in) :: regrid_param
type(HorizontalDimsSpec), optional, intent(in) :: horizontal_dims_spec
! optional args last
real, optional, intent(in) :: default_value
character(*), optional, intent(in) :: accumulation_type
type(ESMF_TimeInterval), optional, intent(in) :: timestep
type(AspectCollection), pointer :: aspects
aspects => field_spec%get_aspects()
call aspects%set_vertical_grid_aspect(VerticalGridAspect( &
vertical_grid=vertical_grid, &
vertical_dim_spec=vertical_dim_spec, &
geom=geom))
call aspects%set_geom_aspect(GeomAspect(geom, regrid_param, horizontal_dims_spec))
call aspects%set_units_aspect(UnitsAspect(units))
call aspects%set_ungridded_dims_aspect(UngriddedDimsAspect(ungridded_dims))
call aspects%set_typekind_aspect(TypekindAspect(typekind))
call aspects%set_frequency_aspect(FrequencyAspect(timestep, accumulation_type))
call aspects%set_attributes_aspect(AttributesAspect(attributes))
if (present(standard_name)) field_spec%standard_name = standard_name
if (present(long_name)) field_spec%long_name = long_name
! regrid_param
if (present(default_value)) field_spec%default_value = default_value
_UNUSED_DUMMY(unusable)
end function new_FieldSpec_geom