Difference between revisions of "roms cmeps.yaml"

From WikiROMS
Jump to navigationJump to search
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<div class="title">roms_cmeps.yaml</div>
<div class="title">ROMS ESMF/NUOPC Configuration File For CMEPS: roms_cmeps.yaml</div>


__TOC__
__TOC__
Line 5: Line 5:
The <span class="blue">roms_cmeps.yaml</span> file specifies the ROMS Community Mediator for Earth Prediction Systems ('''CMEPS''') Iconfiguration and Import/Export Metadata Dictionary. Starting '''svn''' revision '''-r 1902''' released on March 1, 2022, the ROMS coupling metadata is managed with a '''YAML''' file. The '''YAML''' files are simple, easy to follow, elegant, portable, and expandable. ROMS can now process YAML files with its parser module, <span class="blue">yaml_parser.F</span>. Therefore, there is no need to use third-party '''YAML''' parsers. Basically, <span class="blue">roms_cmeps.yaml</span> has the following structure:
The <span class="blue">roms_cmeps.yaml</span> file specifies the ROMS Community Mediator for Earth Prediction Systems ('''CMEPS''') Iconfiguration and Import/Export Metadata Dictionary. Starting '''svn''' revision '''-r 1902''' released on March 1, 2022, the ROMS coupling metadata is managed with a '''YAML''' file. The '''YAML''' files are simple, easy to follow, elegant, portable, and expandable. ROMS can now process YAML files with its parser module, <span class="blue">yaml_parser.F</span>. Therefore, there is no need to use third-party '''YAML''' parsers. Basically, <span class="blue">roms_cmeps.yaml</span> has the following structure:


<div class="box"><span class="violet">convention</span>: <span class="twilightBlue">CF</span><br /><br /><span class="violet">project</span>: <span class="twilightBlue">  FV3-ROMS CMEPS couping in the WATL Application</span><br /><br /><span class="violet">title</span>:      <span class="twilightBlue">Hurricane Isaias Test</span><br /><br /><span class="violet">date</span>:            <span class="twilightBlue">2020-07-31T00:00:00Z        <span class="red">#</span> Starting date, Hurricane Isaias</span><br /><span class="violet">forecast_length</span>: <span class="green">&ForecastLength</span> <span class="twilightBlue">PT96H      <span class="red">#</span> 6 hours (ISO 8601)</span><br /><br /><span class="violet">coupling_step</span>:  <span class="green">&dt</span> <span class="twilightBlue">180.0d0                <span class="red">#</span> 3 minutes (PT180S)</span><br /><br /><span class="violet">linked_grid</span>:    <span class="twilightBlue">1                          <span class="red">#</span> linked ROMS nested grid number</span><br /><br /><span class="violet">ATM_component</span>:  <span class="green">&ATM</span> <span class="twilightBlue">FV3</span><br /><span class="violet">DATA_component</span>:  <span class="twilightBlue">data.nc</span><br /><span class="violet">OCN_component</span>:  <span class="green">&OCN</span> <span class="twilightBlue">ROMS</span><br /><br /><span class="violet">CoupledSet</span>:      <span class="twilightBlue">ESM_01</span><br /><span class="violet">ExportState</span>:    <span class="twilightBlue">Export_ESM_01</span><br /><span class="violet">ImportState</span>:    <span class="twilightBlue">Import_ESM_01</span><br /><br /><span class="violet">PETlayoutOption</span>: <span class="twilightBlue">0</span><br /><br /><span class="violet">CouplingType</span>:    <span class="twilightBlue">2                          <span class="red">#</span> semi-implicit</span><br /><br /><span class="violet">DebugLevel</span>:      <span class="twilightBlue">1</span>                          <span class="red">#</span> <span class="twilightBlue">reports informative messages</span><br /><span class="violet">TraceLevel</span>:      <span class="twilightBlue">0</span><br /><br /><span class="violet">standard_input</span>:<br />  <span class="violet">OCN_component: <span class="twilightBlue">roms_watl.in</span><br />  <span class="violet">ATM_component</span>: <span class="twilightBlue">namelist</span><br /><br /><span class="violet">state variables</span>: <span class="red">[<span class="twilightBlue">sea_surface_height_above_geoid</span>,<br />                  <span class="twilightBlue">barotropic_sea_water_x_velocity</span>,<br />                  <span class="twilightBlue">barotropic_sea_water_y_velocity</span>,<br />                  <span class="twilightBlue">sea_water_x_velocity</span>,<br />                  <span class="twilightBlue">sea_water_y_velocity</span>,<br />                  <span class="twilightBlue">sea_water_potential_temperature</span>,<br />                  <span class="twilightBlue">sea_water_practical_salinity</span>]</span><br /><br /><span class="violet">export</span>:                                      <span class="red">#</span> <span class="twilightBlue">OCN to ATM</span><br /><br />  - <span class="violet">standard_name</span>:      <span class="twilightBlue">sea_surface_temperature</span><br />    <span class="violet">long_name</span>:          <span class="twilightBlue">sea surface temperature</span><br />    <span class="violet">short_name</span>:          <span class="twilightBlue">SST</span><br />    <span class="violet">data_variables</span>:      <span class="red">[<span class="twilightBlue">temperature</span>, <span class="twilightBlue">time</span>]</span><br />    <span class="violet">source_units</span>:        <span class="twilightBlue">C</span><br />    <span class="violet">destination_units</span>:  <span class="twilightBlue">K</span><br />    <span class="violet">source_grid</span>:        <span class="twilightBlue">cell_center</span><br />    <span class="violet">destination_grid</span>:    <span class="twilightBlue">cell_center</span><br />    <span class="violet">add_offset</span>:          <span class="twilightBlue">273.15d0</span><br />    <span class="violet">scale</span>:              <span class="twilightBlue">1.0d0</span><br />    <span class="violet">debug_write</span>:        <span class="twilightBlue">false</span><br />    <span class="violet">connected_to</span>:        <span class="salmon">*OCN</span><br />    <span class="violet">map_type</span>:            <span class="twilightBlue">mapnstod</span><br />    <span class="violet">map_norm</span>:            <span class="twilightBlue">none</span><br /><br /><span class="violet">import:                                      <span class="red">#</span> <span class="twilightBlue">ATM to OCN</span><br /><br /> - <span class="violet">standard_name</span>:       <span class="twilightBlue">net_downward_shortwave_flux_at_sea_water_surface</span><br />   <span class="violet">long_name</span>:           <span class="twilightBlue">surface net shortwave radiation flux</span><br />    <span class="violet">short_name</span>:         <span class="twilightBlue">SWrad</span><br />    <span class="violet">data_variables</span>:     <span class="red">[<span class="twilightBlue">swrad</span>, <span class="twilightBlue">time</span>]</span><br />    <span class="violet">source_units</span>:        <span class="twilightBlue">W m-2</span><br />    <span class="violet">destination_units</span>:  <span class="twilightBlue">W m-2</span><br />    <span class="violet">source_grid</span>:        <span class="twilightBlue">cell_center</span><br />    <span class="violet">destination_grid</span>:    <span class="twilightBlue">cell_center</span><br />    <span class="violet">add_offset</span>:          <span class="twilightBlue">0.0d0</span><br />    <span class="violet">scale</span>:              <span class="twilightBlue">1.0d0</span><br />    <span class="violet">debug_write</span>:        <span class="twilightBlue">false</span><br />    <span class="violet">connected_to</span>:        <span class="salmon">*ATM</span><br />    <span class="violet">map_type</span>:            <span class="twilightBlue">mapbilnr</span><br />    <span class="violet">map_norm</span>:            <span class="twilightBlue">none</span><br /><br />  ...<br /><br /><span class="violet">bulk_fluxes import:</span>                          <span class="red">#</span> <span class="twilightBlue">ATM to OCN if [[BULK_FLUXES]] is activated</span><br /><br />  - <span class="violet">standard_name</span>:      <span class="twilightBlue">net_downward_shortwave_flux_at_sea_water_surface</span><br />    <span class="violet">long_name</span>:          <span class="twilightBlue">surface shortwave radiation flux</span><br />    <span class="violet">short_name</span>:          <span class="twilightBlue">SWrad</span><br />    <span class="violet">data_variables</span>:      <span class="red">[<span class="twilightBlue">swrad</span>, <span class="twilightBlue">time</span>]</span><br />    <span class="violet">source_units</span>:        <span class="twilightBlue">W m-2</span><br />    <span class="violet">destination_units</span>:  <span class="twilightBlue">W m-2</span><br />    <span class="violet">source_grid</span>:        <span class="twilightBlue">cell_center</span><br />    <span class="violet">destination_grid</span>:    <span class="twilightBlue">cell_center</span><br />    <span class="violet">add_offset</span>:          <span class="twilightBlue">0.0d0</span><br />    <span class="violet">scale</span>:              <span class="twilightBlue">1.0d0</span><br />    <span class="violet">debug_write</span>:        <span class="twilightBlue">false</span><br />    <span class="violet">connected_to</span>:        <span class="salmon">*ATM</span><br />    <span class="violet">map_type</span>:            <span class="twilightBlue">mapbilnr</span><br />    <span class="violet">map_norm</span>:            <span class="twilightBlue">none</span><br /><br />  ...</div>
<div class="code"><span class="violet">convention</span>: <span class="twilightBlue">CF</span><br /><br /><span class="violet">project</span>: <span class="twilightBlue">  FV3-ROMS CMEPS couping in the WATL Application</span><br /><br /><span class="violet">title</span>:      <span class="twilightBlue">Hurricane Isaias Test</span><br /><br /><span class="violet">date</span>:            <span class="twilightBlue">2020-07-31T00:00:00Z        <span class="red">#</span> Starting date, Hurricane Isaias</span><br /><span class="violet">forecast_length</span>: <span class="green">&ForecastLength</span> <span class="twilightBlue">PT96H      <span class="red">#</span> 6 hours (ISO 8601)</span><br /><br /><span class="violet">coupling_step</span>:  <span class="green">&dt</span> <span class="twilightBlue">180.0d0                <span class="red">#</span> 3 minutes (PT180S)</span><br /><br /><span class="violet">linked_grid</span>:    <span class="twilightBlue">1                          <span class="red">#</span> linked ROMS nested grid number</span><br /><br /><span class="violet">ATM_component</span>:  <span class="green">&ATM</span> <span class="twilightBlue">FV3</span><br /><span class="violet">DATA_component</span>:  <span class="twilightBlue">data.nc</span><br /><span class="violet">OCN_component</span>:  <span class="green">&OCN</span> <span class="twilightBlue">ROMS</span><br /><br /><span class="violet">CoupledSet</span>:      <span class="twilightBlue">ESM_01</span><br /><span class="violet">ExportState</span>:    <span class="twilightBlue">Export_ESM_01</span><br /><span class="violet">ImportState</span>:    <span class="twilightBlue">Import_ESM_01</span><br /><br /><span class="violet">PETlayoutOption</span>: <span class="twilightBlue">0</span><br /><br /><span class="violet">CouplingType</span>:    <span class="twilightBlue">2                          <span class="red">#</span> semi-implicit</span><br /><br /><span class="violet">DebugLevel</span>:      <span class="twilightBlue">1</span>                          <span class="red">#</span> <span class="twilightBlue">reports informative messages</span><br /><span class="violet">TraceLevel</span>:      <span class="twilightBlue">0</span><br /><br /><span class="violet">standard_input</span>:<br />  <span class="violet">OCN_component: <span class="twilightBlue">roms_watl.in</span><br />  <span class="violet">ATM_component</span>: <span class="twilightBlue">namelist</span><br /><br /><span class="violet">state variables</span>: <span class="red">[<span class="twilightBlue">sea_surface_height_above_geoid</span>,<br />                  <span class="twilightBlue">barotropic_sea_water_x_velocity</span>,<br />                  <span class="twilightBlue">barotropic_sea_water_y_velocity</span>,<br />                  <span class="twilightBlue">sea_water_x_velocity</span>,<br />                  <span class="twilightBlue">sea_water_y_velocity</span>,<br />                  <span class="twilightBlue">sea_water_potential_temperature</span>,<br />                  <span class="twilightBlue">sea_water_practical_salinity</span>]</span><br /><br /><span class="violet">export</span>:                                      <span class="red">#</span> <span class="twilightBlue">OCN to ATM</span><br /><br />  - <span class="violet">standard_name</span>:      <span class="twilightBlue">sea_surface_temperature</span><br />    <span class="violet">long_name</span>:          <span class="twilightBlue">sea surface temperature</span><br />    <span class="violet">short_name</span>:          <span class="twilightBlue">SST</span><br />    <span class="violet">data_variables</span>:      <span class="red">[<span class="twilightBlue">temperature</span>, <span class="twilightBlue">time</span>]</span><br />    <span class="violet">source_units</span>:        <span class="twilightBlue">C</span><br />    <span class="violet">destination_units</span>:  <span class="twilightBlue">K</span><br />    <span class="violet">source_grid</span>:        <span class="twilightBlue">cell_center</span><br />    <span class="violet">destination_grid</span>:    <span class="twilightBlue">cell_center</span><br />    <span class="violet">add_offset</span>:          <span class="twilightBlue">273.15d0</span><br />    <span class="violet">scale</span>:              <span class="twilightBlue">1.0d0</span><br />    <span class="violet">debug_write</span>:        <span class="twilightBlue">false</span><br />    <span class="violet">connected_to</span>:        <span class="salmon">*OCN</span><br />    <span class="violet">map_type</span>:            <span class="twilightBlue">mapnstod</span><br />    <span class="violet">map_norm</span>:            <span class="twilightBlue">none</span><br /><br /> <span class="red">#</span> <span class="twilightBlue">And so on. It is an expandable blocking list ...</span><br /><br /><span class="violet">import:                                     <span class="red">#</span> <span class="twilightBlue">ATM to OCN</span><br /><br />  - <span class="violet">standard_name</span>:       <span class="twilightBlue">net_downward_shortwave_flux_at_sea_water_surface</span><br />    <span class="violet">long_name</span>:           <span class="twilightBlue">surface net shortwave radiation flux</span><br />    <span class="violet">short_name</span>:         <span class="twilightBlue">SWrad</span><br />    <span class="violet">data_variables</span>:      <span class="red">[<span class="twilightBlue">swrad</span>, <span class="twilightBlue">time</span>]</span><br />    <span class="violet">source_units</span>:        <span class="twilightBlue">W m-2</span><br />    <span class="violet">destination_units</span>:  <span class="twilightBlue">W m-2</span><br />    <span class="violet">source_grid</span>:        <span class="twilightBlue">cell_center</span><br />    <span class="violet">destination_grid</span>:    <span class="twilightBlue">cell_center</span><br />    <span class="violet">add_offset</span>:          <span class="twilightBlue">0.0d0</span><br />    <span class="violet">scale</span>:              <span class="twilightBlue">1.0d0</span><br />    <span class="violet">debug_write</span>:        <span class="twilightBlue">false</span><br />    <span class="violet">connected_to</span>:        <span class="salmon">*ATM</span><br />    <span class="violet">map_type</span>:            <span class="twilightBlue">mapbilnr</span><br />    <span class="violet">map_norm</span>:            <span class="twilightBlue">none</span><br /><br />  <span class="red">#</span> <span class="twilightBlue">And so on. It is an expandable blocking list ...</span><br /><br /><span class="violet">bulk_fluxes import:</span>                          <span class="red">#</span> <span class="twilightBlue">ATM to OCN if [[BULK_FLUXES]] is activated</span><br /><br />  - <span class="violet">standard_name</span>:      <span class="twilightBlue">net_downward_shortwave_flux_at_sea_water_surface</span><br />    <span class="violet">long_name</span>:          <span class="twilightBlue">surface shortwave radiation flux</span><br />    <span class="violet">short_name</span>:          <span class="twilightBlue">SWrad</span><br />    <span class="violet">data_variables</span>:      <span class="red">[<span class="twilightBlue">swrad</span>, <span class="twilightBlue">time</span>]</span><br />    <span class="violet">source_units</span>:        <span class="twilightBlue">W m-2</span><br />    <span class="violet">destination_units</span>:  <span class="twilightBlue">W m-2</span><br />    <span class="violet">source_grid</span>:        <span class="twilightBlue">cell_center</span><br />    <span class="violet">destination_grid</span>:    <span class="twilightBlue">cell_center</span><br />    <span class="violet">add_offset</span>:          <span class="twilightBlue">0.0d0</span><br />    <span class="violet">scale</span>:              <span class="twilightBlue">1.0d0</span><br />    <span class="violet">debug_write</span>:        <span class="twilightBlue">false</span><br />    <span class="violet">connected_to</span>:        <span class="salmon">*ATM</span><br />    <span class="violet">map_type</span>:            <span class="twilightBlue">mapbilnr</span><br />    <span class="violet">map_norm</span>:            <span class="twilightBlue">none</span><br /><br />  <span class="red">#</span> <span class="twilightBlue">And so on. It is an expandable blocking list ...</span></div>




Line 51: Line 51:
|The source component to which the field is connected.
|The source component to which the field is connected.
|-
|-
|<span class="violet">regrid_method</span>
|valign="top"|<span class="violet">map_type</span>
|The field regridding method from source to destination:<br />
|CMEPS regridding flag from source to destination:<br /><br />
   {|style="margin-left: 100px;" border="1" cellspacing="0" cellpadding="5" align="left"
   {|style="margin-left: 100px;" border="1" cellspacing="0" cellpadding="5" align="left"
   !'''Value'''
   !'''Value'''
   !'''Description'''
   !'''Description'''
   |-
   |-
   |<span class="twilightBlue">bilinear</span>
   |<span class="twilightBlue">mapbilnr</span>
   |bilinear interpolation
   |bilinear mapping
   |-
   |-
   |<span class="twilightBlue">patch</span>
   |<span class="twilightBlue">mapconsf</span>
   |high-order patch recovery
   |first order conservative mapping with normalization type of conservative fraction
   |-
   |-
   |<span class="twilightBlue">conservative1</span>
   |<span class="twilightBlue">mapconsd</span>
   |first-order conservative
   |first order conservative mapping with normalization type of conservative destination
   |-
   |-
   |<span class="twilightBlue">conservative2</span>
   |<span class="twilightBlue">mapfcopy</span>
   |second-order conservative
   |redist mapping
   |-
   |-
   |<span class="twilightBlue">nearest</span>
   |<span class="twilightBlue">mapnstod</span>
   |nearest neighbor interpolation
  |nearest source to destination mapping
  |-
  |<span class="twilightBlue">mapnstod_consd</span>
  |nearest source to destination followed by conservative destination
  |-
  |<span class="twilightBlue">mapnstod_consf</span>
   |nearest source to destination followed by conservative fraction
   |-
   |-
   |}
   |}
|-
|-
|<span class="violet">extrapolate_method</span>
|valign="top"|<span class="violet">map_norm</span>
|The field extrapolation method for unmapped points:<br />
|CMEPS mapping normalization flag:<br /><br />
   {|style="margin-left: 100px;" border="1" cellspacing="0" cellpadding="5" align="left"
   {|style="margin-left: 100px;" border="1" cellspacing="0" cellpadding="5" align="left"
   !'''Value'''
   !'''Value'''
   !'''Description'''
   !'''Description'''
  |-
  |<span class="twilightBlue">unset</span>
  |no normalization is set, should only be used if <span class="violet">map_type</span> is <span class="twilightBlue">mapfcopy</span>
   |-
   |-
   |<span class="twilightBlue">none</span>
   |<span class="twilightBlue">none</span>
   |no extrapolation
   |no normalization is done, should only be used if <span class="violet">map_type</span> is not <span class="twilightBlue">mapfcopy</span>
   |-
   |-
   |<span class="twilightBlue">nearest</span>
   |<span class="twilightBlue">one</span>
   |nearest source to destination
   |normalize by 1
   |-
   |-
   |<span class="twilightBlue">idavg</span>
   |<span class="twilightBlue">lfrin</span>
   |nearest inverse distance average
   |normalize by the <span class="twilightBlue">lfrin</span> field in <span class="red">FBFrac(compLND)</span>. Used to map '''LND->ATM'''.
   |-
   |-
   |<span class="twilightBlue">creep</span>
   |<span class="twilightBlue">ifrac</span>
   |creep fill at specified level
   |normalize by the <span class="twilightBlue">ifrac</span> field in <span class="red">FBFrac(compICE)</span>. Used to map '''ICE->ATM'''.
   |-
   |-
   |<span class="twilightBlue">2steps</span>
   |<span class="twilightBlue">ofrac</span>
   |Turuncoglu's 2 steps extrapolation
   |normalize by the <span class="twilightBlue">ofrac</span> field in <span class="red">FBFrac(compOCN)</span>. Used to map '''ICE->ATM'''.
  |-
  |<span class="twilightBlue">custom</span>
  |custom mapping and normalization (used to map '''GLC->LND''')
   |-
   |-
   |}
   |}
Line 103: Line 115:
The ESM imported fields are processed as:
The ESM imported fields are processed as:
:<span class="twilightBlue">field</span> (<span class="violet">destination_units</span>) = <span class="twilightBlue">field</span> (<span class="violet">source_units</span>) * <span class="violet">scale</span> + <span class="violet">add_offset</span>
:<span class="twilightBlue">field</span> (<span class="violet">destination_units</span>) = <span class="twilightBlue">field</span> (<span class="violet">source_units</span>) * <span class="violet">scale</span> + <span class="violet">add_offset</span>
YAML allows '''alias''' and '''anchor''' to avoid repetition. In YAML, single or multiple line comments start with a hash <span class="twilightBlue">#</span>. Also, comment after a key/value pair is allowed. All comments are skipped during processing.
'''YAML''' allows <span class="forestGreen">Anchors</span> and <span class="salmon">Aliases</span> to avoid repetition. In '''YAML''', single or multiple line comments start with a hash <span class="red">#</span>. Also, comment after a key/value pair is allowed. All comments are skipped during processing.


=== Exchanged Fields Metadata: short_name and standard_name ===
=== Exchanged Fields Metadata: short_name and standard_name ===


The following table shows the coupling metadata <span class="violet">short_name</span> and <span class="violet">standard_name</span> for the '''ESMF/NUOPC''' Export and Import states.  They follow CF conventions closely.  However, we needed to create lots of them because are not available in the CF tables but followed their established syntax.
The following table shows the coupling metadata <span class="violet">short_name</span> and <span class="violet">standard_name</span> for the '''ESMF/NUOPC''' Export and Import states.  They follow '''CF''' conventions closely.  However, we needed to create lots of them because are not available in the '''CF''' tables but followed their established syntax.  The list of exchanged fields is application dependent and '''YAML''' files are expandable and easy to modify.




Line 115: Line 127:
|-
|-
| <span class="mediumOrchid">dLWrad</span>
| <span class="mediumOrchid">dLWrad</span>
| <span class="twilightBlue">surface_net_downward_longwave_flux</span>
|-
| <span class="mediumOrchid">dSWrad</span>
| <span class="twilightBlue">net_downward_shortwave_flux_at_sea_water_surface</span>
|-
| <span class="mediumOrchid">dSST</span>
| <span class="twilightBlue">sea_surface_temperature_data</span>
|-
| <span class="mediumOrchid">Hair</span>
| <span class="twilightBlue">surface_specific_humidity</span>
|-
| <span class="mediumOrchid">LHfx</span>
| <span class="twilightBlue">surface_latent_heat_flux</span>
|-
| <span class="mediumOrchid">LWrad</span>
| <span class="twilightBlue">surface_net_downward_longwave_flux</span>
| <span class="twilightBlue">surface_net_downward_longwave_flux</span>
|-
|-
| <span class="mediumOrchid">Pair</span>
| <span class="mediumOrchid">Pair</span>
| <span class="twilightBlue">surface_air_pressure</span>
| <span class="twilightBlue">surface_air_pressure</span>
|-
| <span class="mediumOrchid">Pmsl</span>
| <span class="twilightBlue">mean_sea_level_pressure</span>
|-
|-
| <span class="mediumOrchid">Qair</span>
| <span class="mediumOrchid">Qair</span>
Line 146: Line 140:
| <span class="mediumOrchid">shflux</span>
| <span class="mediumOrchid">shflux</span>
| <span class="twilightBlue">surface_downward_heat_flux_in_sea_water</span>
| <span class="twilightBlue">surface_downward_heat_flux_in_sea_water</span>
|-
| <span class="mediumOrchid">SHfx</span>
| <span class="twilightBlue">surface_sensible_heat_flux</span>
|-
|-
| <span class="mediumOrchid">SST</span>
| <span class="mediumOrchid">SST</span>
Line 163: Line 154:
|-
|-
| <span class="mediumOrchid">SWrad</span>
| <span class="mediumOrchid">SWrad</span>
| <span class="twilightBlue">net_shortwave_flux_at_sea_water_surface</span>
| <span class="twilightBlue">net_downward_shortwave_flux_at_sea_water_surface</span>
|-
|-
| <span class="mediumOrchid">Tair</span>
| <span class="mediumOrchid">Tair</span>

Latest revision as of 15:30, 4 May 2022

ROMS ESMF/NUOPC Configuration File For CMEPS: roms_cmeps.yaml

The roms_cmeps.yaml file specifies the ROMS Community Mediator for Earth Prediction Systems (CMEPS) Iconfiguration and Import/Export Metadata Dictionary. Starting svn revision -r 1902 released on March 1, 2022, the ROMS coupling metadata is managed with a YAML file. The YAML files are simple, easy to follow, elegant, portable, and expandable. ROMS can now process YAML files with its parser module, yaml_parser.F. Therefore, there is no need to use third-party YAML parsers. Basically, roms_cmeps.yaml has the following structure:

convention: CF

project: FV3-ROMS CMEPS couping in the WATL Application

title: Hurricane Isaias Test

date: 2020-07-31T00:00:00Z # Starting date, Hurricane Isaias
forecast_length: &ForecastLength PT96H # 6 hours (ISO 8601)

coupling_step: &dt 180.0d0 # 3 minutes (PT180S)

linked_grid: 1 # linked ROMS nested grid number

ATM_component: &ATM FV3
DATA_component: data.nc
OCN_component: &OCN ROMS

CoupledSet: ESM_01
ExportState: Export_ESM_01
ImportState: Import_ESM_01

PETlayoutOption: 0

CouplingType: 2 # semi-implicit

DebugLevel: 1 # reports informative messages
TraceLevel: 0

standard_input:
OCN_component: roms_watl.in
ATM_component: namelist

state variables: [sea_surface_height_above_geoid,
barotropic_sea_water_x_velocity,
barotropic_sea_water_y_velocity,
sea_water_x_velocity,
sea_water_y_velocity,
sea_water_potential_temperature,
sea_water_practical_salinity]


export: # OCN to ATM

- standard_name: sea_surface_temperature
long_name: sea surface temperature
short_name: SST
data_variables: [temperature, time]
source_units: C
destination_units: K
source_grid: cell_center
destination_grid: cell_center
add_offset: 273.15d0
scale: 1.0d0
debug_write: false
connected_to: *OCN
map_type: mapnstod
map_norm: none

# And so on. It is an expandable blocking list ...

import: # ATM to OCN

- standard_name: net_downward_shortwave_flux_at_sea_water_surface
long_name: surface net shortwave radiation flux
short_name: SWrad
data_variables: [swrad, time]
source_units: W m-2
destination_units: W m-2
source_grid: cell_center
destination_grid: cell_center
add_offset: 0.0d0
scale: 1.0d0
debug_write: false
connected_to: *ATM
map_type: mapbilnr
map_norm: none

# And so on. It is an expandable blocking list ...

bulk_fluxes import: # ATM to OCN if BULK_FLUXES is activated

- standard_name: net_downward_shortwave_flux_at_sea_water_surface
long_name: surface shortwave radiation flux
short_name: SWrad
data_variables: [swrad, time]
source_units: W m-2
destination_units: W m-2
source_grid: cell_center
destination_grid: cell_center
add_offset: 0.0d0
scale: 1.0d0
debug_write: false
connected_to: *ATM
map_type: mapbilnr
map_norm: none

# And so on. It is an expandable blocking list ...


The description key for each pair member of the YAML blocking list is as follows:


Key Description
standard_name The field's standard name. A list of all exchanged standard_name field are shown below.
long_name The field's long descriptive name.
short_name The field's short name private to the ESMF/NUOPC cap module
data_variables The DATA component NetCDF field and associated time variable names.
source_units The field's source units.
destination_units The field's destination units.
source_grid The field's source grid-cell location.
destination_grid The field's destination grid-cell location.
add_offset The value to add to the exchanged field.
scale The scale to use to convert data from source to destination units.
debug_write A switch indicating whether or not to write out exchanged field, if DebugLevel>2.
connected_to The source component to which the field is connected.
map_type CMEPS regridding flag from source to destination:

Value Description
mapbilnr bilinear mapping
mapconsf first order conservative mapping with normalization type of conservative fraction
mapconsd first order conservative mapping with normalization type of conservative destination
mapfcopy redist mapping
mapnstod nearest source to destination mapping
mapnstod_consd nearest source to destination followed by conservative destination
mapnstod_consf nearest source to destination followed by conservative fraction
map_norm CMEPS mapping normalization flag:

Value Description
unset no normalization is set, should only be used if map_type is mapfcopy
none no normalization is done, should only be used if map_type is not mapfcopy
one normalize by 1
lfrin normalize by the lfrin field in FBFrac(compLND). Used to map LND->ATM.
ifrac normalize by the ifrac field in FBFrac(compICE). Used to map ICE->ATM.
ofrac normalize by the ofrac field in FBFrac(compOCN). Used to map ICE->ATM.
custom custom mapping and normalization (used to map GLC->LND)


The ESM imported fields are processed as:

field (destination_units) = field (source_units) * scale + add_offset

YAML allows Anchors and Aliases to avoid repetition. In YAML, single or multiple line comments start with a hash #. Also, comment after a key/value pair is allowed. All comments are skipped during processing.

Exchanged Fields Metadata: short_name and standard_name

The following table shows the coupling metadata short_name and standard_name for the ESMF/NUOPC Export and Import states. They follow CF conventions closely. However, we needed to create lots of them because are not available in the CF tables but followed their established syntax. The list of exchanged fields is application dependent and YAML files are expandable and easy to modify.


short_name standard_name
dLWrad surface_net_downward_longwave_flux
Pair surface_air_pressure
Qair surface_relative_humidity
rain precipitation_flux
shflux surface_downward_heat_flux_in_sea_water
SST sea_surface_temperature
sustr surface_downward_x_stress
svstr surface_downward_y_stress
swflux surface_upward_water_flux
SWrad net_downward_shortwave_flux_at_sea_water_surface
Tair surface_air_temperature
Uwind surface_eastward_wind
Vwind surface_northward_wind