CSN MMF Example: Difference between revisions

From CSDMS
Line 1: Line 1:
= '''    [[CSDMS_Standard_Names | CSDMS Standard Names]] —  Model Metadata File Examples''' =
= '''    [[CSDMS_Standard_Names | CSDMS Standard Names]] —  Model Metadata File Examples''' =
:
:
* Model Metadata Files (MMF) are a relatively new addition to the CSDMS Standard Names.  Their primary purpose is to capture metadata, especially '''model assumptions''' in a standardized way that can be used to determine the "goodness" of matches between components that '''''provide''''' a given variable and components that '''''use''''' that variable.  The current, tentative list of CSDMS Assumption Names that can be specified with an <assume> tag is at:  [[CSN_Assumption_Names | '''CSDMS Assumption Names''']].
* Model Metadata Files (MMF) are a relatively new addition to the CSDMS Standard Names.  Their primary purpose is to capture metadata, especially '''model assumptions''' in a standardized way that can be used to determine the "goodness" of matches between components that '''''provide''''' a given variable and components that '''''use''''' that variable.  The current, tentative list of CSDMS Assumption Names that can be specified with an <assume> tag can be found at:  [[CSN_Assumption_Names | '''CSDMS Assumption Names''']].
:
:
* MM files also contain enough information to make it possible to '''''automatically implement''''' several of the BMI functions, including: get_input_var_names(), get_output_var_names(), get_attribute(), get_var_type() and get_var_units().
* MM files also contain enough information to make it possible to '''''automatically implement''''' several of the BMI functions, including: get_input_var_names(), get_output_var_names(), get_attribute(), get_var_type() and get_var_units().

Revision as of 11:37, 10 April 2013

    CSDMS Standard Names — Model Metadata File Examples

  • Model Metadata Files (MMF) are a relatively new addition to the CSDMS Standard Names. Their primary purpose is to capture metadata, especially model assumptions in a standardized way that can be used to determine the "goodness" of matches between components that provide a given variable and components that use that variable. The current, tentative list of CSDMS Assumption Names that can be specified with an <assume> tag can be found at: CSDMS Assumption Names.
  • MM files also contain enough information to make it possible to automatically implement several of the BMI functions, including: get_input_var_names(), get_output_var_names(), get_attribute(), get_var_type() and get_var_units().
  • While the tag to start an XML comment actually has an exclamation point after the "<", it has been removed on this page so the wiki does not interpret them as comments and hide them.
<model>

<-- =========================== -->
<--  Model Information -->
<-- =========================== -->
<author> Scott D. Peckham </author>
<name> TopoFlow - Channels: Kinematic Wave </name>
<grid_type> uniform </grid_type>
<time_step_type> fixed </time_step_type>
<ellipsoid> none </ellipsoid>
<-- =========================== -->
<--  Model Assumptions -->
<-- =========================== -->
<assume> kinematic_wave_model </assume>
<assume> d8_flow_routing_model </assume>
<assume> no_overbank_flow </assume>
<assume> cartesian_coordinate_system </assume>
<options>
    <assume> law_of_the_wall </assume>
    <assume> manning_equation </assume>
</options>
<-- =========================== -->
<--  Object Assumptions -->
<-- =========================== -->
<object name='channel'>
    <assume> 1d </assume>
    <assume> prism_shaped </assume>
</object>
<object name='channel_cross_section'>
    <assume> trapezoid_shaped </assume>
</object>
<object name='channel_water' >
    <assume> mass_conserved </assume>
    <assume> momentum_conserved </assume>
    <assume> incompressible_fluid </assume>
    <assume> newtonian_fluid </assume>
    <assume> depth_integrated_flow </assume>
    <assume> hydrostatic_flow </assume>
    <assume> nonaccelerating_flow </assume>
    <assume> turbulent_flow </assume>
</object>
<object name='channel_bed'>
    <option>
        <assume> gravel </assume>
        <assume> sand </assume>
    </option>
</object>
<var_group>
<type> float64 </type>

<-- =========================== -->
<--  Input Variables -->
<-- =========================== -->
<input_var>
    <name> glacier__melt_rate </_name>
    <units> m s-1 </units>
    <min> 0 </min>
</input_var>
<input_var>
    <name> land_snow__melt_rate </name>
    <units> m s-1 </units>
    <min> 0 </min>
</input_var>
<input_var>
    <name> land_surface__elevation </name>
    <units> m </units>
    <assume> hydrologically_sound </assume>
</input_var>
<input_var>
    <name> land_water__baseflow_emergence_rate </name>
    <units> m s-1 </units>
    <asssume> nonnegative </assume>
</input_var>
<input_var>
    <name> land_water__evaporation_rate </name>
    <units> m s-1 </units>
</input_var>
<input_var>
    <name> land_water__infiltration_rate </name>
    <units> m s-1 </units>
</input_var>
<input_var>
    <name> water__liquid_equivalent_precipitation_rate </name>
    <units> m s-1 </units>
</input_var>
<-- =========================== -->
<--  Output Variables -->
<-- =========================== -->
<output_var> 
    <name> channel_bed__manning_coefficient </name>
    <units> m-1/3 s </units>
</output_var>
<output_var>
    <name> channel_bed__max_over_domain_of_manning_coefficient </name>
    <units> m-1/3 s </units>
</output_var>
<output_var>
    <name> channel_bed__max_over_domain_of_roughness_length </name>
    <units> m </units>
</output_var> 
<output_var>
    <name> channel_bed__min_over_domain_of_manning_coefficient </name>
    <units> m-1/3 s </units>
</output_var>
<output_var>
    <name> channel_bed__min_over_domain_of_roughness_length </name>
    <units> m </units>
</output_var>
<output_var>
    <name> channel_bed__roughness_length </name>
    <units> m </units>
</output_var>
<output_var>
    <name> channel_bed_surface__slope </name>   ### (vs. channel_water_surface__slope)
    <units> m/m </units>
</output_var>
<output_var>
    <name> channel_cross_section__hydraulic_radius </name>    ## (insert "water" ?)
    <units> m </units>
</output_var>
<output_var>
    <name> channel_cross_section_trapezoid__bank_angle </name> 
    <units> rad </units>
</output_var>
<output_var>
    <name> channel_cross_section_trapezoid__bottom_width </name> 
    <units> m </units>
</output_var>
<output_var>
    <name> channel_cross_section_water__depth </name>    ## (remove "cross_section"?)
    <units> m </units>
    <assume> average_depth_over_cross_section </assume>   #####
    <assume> measured_in_zenith_direction </assume>
</output_var>
<output_var>
    <name> channel_cross_section_water__speed </name>
    ####### (speed or flow_speed or downstream_velocity_component?)
    <units> m s-1 </units>
    <assume> speed_is_averaged_over_cross_section </assume>
</output_var>
<output_var>
    <name> channel_water__discharge </name>    #### (Need outgoing ??)
    <units> m3 s-1 </units>
</output_var>
<output_var>
    <name> channel_water__friction_factor </name>
    <units> 1 </units>
</output_var>
<output_var>
    <name> channel_water__froude_number </name>
    <units> 1 </units>
</output_var>
<output_var>
    <name> channel_water_surface__slope </name>
    <units> 1 </units>
</output_var>
<output_var>
    <name> channel_water__volume </name>     #### (Need "total" ?)
    <units> m3 </units>
</output_var>
<output_var>
    <name> channel_water_model__time_step </name>
    <units> s </units>
</output_var>
<output_var>
    <name> channel_water_surface__slope </name>
    <units> m/m </units>
</output_var>
<output_var>
    <name> land_water__runoff_rate </name>
    <units> m s-1 </units>
</output_var>
<output_var>
    <name> watershed_outlet_water__depth </name>
    <units> m </units>
    <assume> depth_is_averaged_over_cross_section </assume>     ####
</output_var>
<output_var>
    <name> watershed_outlet_water__discharge </name>
    <units> m3 s-1 </units>
</output_var>
<output_var>
    <name> watershed_outlet_water__integral_over_time_of_discharge </name>
    <units> m3 </units>
</output_var>
<output_var>
    <name> watershed_outlet_water__max_over_time_of_depth </name>
    <units> m </units>
    <assume> depth_is_averaged_over_cross_section </assume>     #######
</output_var>
<output_var>
    <name> watershed_outlet_water__max_over_time_of_discharge </name>
    <units> m3 s-1 </units>
</output_var>
<output_var>
    <name> watershed_outlet_water__max_over_time_of_speed </name>
    <units> m s-1 </units>
    <assume> speed_is_averaged_over_cross_section </assume>
</output_var>
<output_var>
    <name> watershed_outlet_water__speed </name>     #### (speed or "flow_speed" ??)
    <units> m s-1 </units>
    <assume> speed_is_averaged_over_cross_section </assume>
</output_var>
<output_var>
    <name> watershed_outlet_water__time_of_max_of_depth </name>
    <units> s </units>
    <assume> depth_is_averaged_over_cross_section </assume>     #######
</output_var>
<output_var>
    <name> watershed_outlet_water__time_of_max_of_discharge </name>
    <units> s </units>
</output_var>
<output_var>
    <name> watershed_outlet_water__time_of_max_of_speed </name>
    <units> s </units>
    <assume> speed_is_averaged_over_cross_section </assume>
</output_var>
<output_var>
    <name> watershed_water__integral_over_area_and_time_of_runoff_rate </name>
    <units> m3 </units>
</output_var>
<output_var>
    <name> watershed_water__max_over_domain_of_depth </name>
    <units> m </units>
</output_var>
<output_var>
    <name> watershed_water__max_over_domain_of_discharge </name>
    <units> m3 s-1 </units>
</output_var>
<output_var>
    <name> watershed_water__max_over_domain_of_speed </name>
    <units> m s-1 </units>
</output_var>
<output_var>
    <name> watershed_water__min_over_domain_of_depth </name>
    <units> m </units>
</output_var>
<output_var>
    <name> watershed_water__min_over_domain_of_discharge </name>
    <units> m3 s-1 </units>
</output_var>
<output_var>
    <name> watershed_water__min_over_domain_of_speed </name>
    <units> m s-1 </units>
</output_var>
</var_group>
 
</model>