How to generate geovals netcdf file?

I need geovals file to simulate scatterometer observations using ScatwindNeutralMetOffice observation opeartor.
Scatterometer neutral wind (Met Office)

But I don’t know how to generate it.

the tutorail
http://academy.jcsda.org/2021-10/pages/activities/ufo_hofx_development.html?highlight=geovals
says:

We use for that purpose auxiliary data named GeoVals. The GeoVals files contain the model fields interpolated at observation locations. In short, the interpolation has already been performed beforehand and the results stored in a file.

Who can help me, thanks.

Hi @cyemeng,

If you’re starting from an obs file and want to save the intermediate GeoVaLs (as suggested by that paragraph in the tutorial), then you can follow the pattern of the fv3-jedi test fv3-jedi/test/testinput/hofx_save_geovals.yaml. There, a GOMsaver obs filter is added to the HofX application yaml to instruct it to write the GeoVaLs.

If instead you’re starting from scratch and you want to generate a random sample of obs locations, you should be able to replace the HofX yaml’s obs space with a “Random Locations” obs space, as is done in fv3-jedi/test/testinput/getvalues.yaml to generate some random locations for the HofX.

Hope this helps!

Hi
very appreciate your answer, I followed your tips and made some progres.

However, it does not works in MPAS-JEDI, since some variables need by this opearator are not in MPAS.

the output is:

OOPS_TRACE Variables::Variables
OOPS_DEBUG HofX3D: Required vars size = 1
OOPS_DEBUG HofX3D: Required vars:7 variables: eastward_wind, friction_velocity_over_water, geopotential_height_levels, ice_area_fraction, northward_wind, obukhov_length, surface_altitude
OOPS_DEBUG HofX3D: Required variables:7 variables: eastward_wind, friction_velocity_over_water, geopotential_height_levels, ice_area_fraction, northward_wind, obukhov_length, surface_altitude
OOPS_TRACE State<MODEL>::variables starting
OOPS_TRACE ChangeVariables<MODEL>::ChangeVariables starting
OOPS_TRACE Variables::Variables start LocalConfiguration[root={variable change => default , input variables => (temperature,spechum,uReconstructZonal,uReconstructMeridional,surface_pressure,theta,rho,u,qv,pressure,landmask,xice,snowc,skintemp,ivgtyp,isltyp,snowh,vegfra,u10,v10,lai,smois,tslb,pressure_p,znt,zol,rmol,xice) , output variables => (eastward_wind,friction_velocity_over_water,geopotential_height_levels,ice_area_fraction,northward_wind,obukhov_length,surface_altitude)}]
OOPS_TRACE Variables::Variables done
OOPS_TRACE Variables::Variables start LocalConfiguration[root={variable change => default , input variables => (temperature,spechum,uReconstructZonal,uReconstructMeridional,surface_pressure,theta,rho,u,qv,pressure,landmask,xice,snowc,skintemp,ivgtyp,isltyp,snowh,vegfra,u10,v10,lai,smois,tslb,pressure_p,znt,zol,rmol,xice) , output variables => (eastward_wind,friction_velocity_over_water,geopotential_height_levels,ice_area_fraction,northward_wind,obukhov_length,surface_altitude)}]
OOPS_TRACE Variables::Variables done
OOPS_TRACE VariableChange<MODEL>::VariableChange starting
OOPS_DEBUG VariableChange::VariableChange input variables: 28 variables: temperature, spechum, uReconstructZonal, uReconstructMeridional, surface_pressure, theta, rho, u, qv, pressure, landmask, xice, snowc, skintemp, ivgtyp, isltyp, snowh, vegfra, u10, v10, lai, smois, tslb, pressure_p, znt, zol, rmol, xice
OOPS_DEBUG VariableChange::VariableChange output variables: 7 variables: eastward_wind, friction_velocity_over_water, geopotential_height_levels, ice_area_fraction, northward_wind, obukhov_length, surface_altitude
OOPS_TRACE VariableChangeBase<MODEL>::create starting
OOPS_TRACE ========= GeometryMPAS mpas_geo_clone_f90   ==========
OOPS_TRACE mpas::VarChaModel2GeoVars constructor starting
OOPS_TRACE mpas::VarChaModel2GeoVars constructor done
OOPS_TRACE VariableChangeBase<MODEL>::create done
OOPS_TRACE VariableChange<MODEL>::VariableChange done
OOPS_TRACE ChangeVariables<MODEL>::ChangeVariables done
OOPS_TRACE State<MODEL>::State starting
OOPS_TRACE ========= GeometryMPAS mpas_geo_clone_f90   ==========
OOPS_TRACE StateMPAS::StateMPAS create.
 --> da_template_pool: friction_velocity_over_water not available in MPAS domain or geom % templated_fields
Abort(1) on node 22 (rank 22 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, 1) - process 22

my config is:

window begin: 2019-08-08T09:00:00Z
window length: PT6H
geometry:
  nml_file: "./namelist.atmosphere"
  streams_file: "./streams.atmosphere"
state:
  state variables: [temperature, spechum, uReconstructZonal, uReconstructMeridional, surface_pressure,
                    theta, rho, u, qv, pressure, landmask, xice, snowc, skintemp, ivgtyp, isltyp,
                    snowh, vegfra, u10, v10, lai, smois, tslb, pressure_p,
                    znt, zol, rmol, xice ]
  filename: "./restart.2019-08-08_12.00.00.nc"
  date: &date 2019-08-08T12:00:00Z
observations:
- obs space:
    name: Scatwind
    obsdatain:
      obsfile: Data/ufo/ascat_obs_2019080812.v2.nc4
    simulated variables: [eastward_wind, northward_wind]
  obs operator:
    name:  ScatwindNeutralMetOffice # VertInterp
#   GOMsaver is the filter to extract GeoVaLs needed by the specified obs operator
#   filename is the output path to the GeoVaLs file
  obs filters:
  - filter: GOMsaver
    filename: Data/hofx/ascat_geovals_mpas_2019080812.nc4

@cyemeng — If I correctly understood the error message, I think you would need to modify the MPAS-JEDI Model2GeoVaLs variable change so that it also computes the additional variable needed by your operator.

That is correct. ScatwindNeutralMetOffice is not tested with MPAS-JEDI yet, so it does not have necessary variable changes to work with ScatwindNeutralMetOffice operator.

1 Like