CSN MMF Example: Difference between revisions
From CSDMS
Line 1: | Line 1: | ||
= ''' [[CSDMS_Standard_Names | CSDMS Standard Names]] — Model Coupling Metadata File Examples''' = | = ''' [[CSDMS_Standard_Names | CSDMS Standard Names]] — Model Coupling Metadata File Examples ''' = | ||
: | : | ||
* Model Coupling Metadata (MCM) files 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''']]. | * Model Coupling Metadata (MCM) files 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''']]. | ||
Line 34: | Line 34: | ||
<assume> cartesian_coordinate_system </assume> | <assume> cartesian_coordinate_system </assume> | ||
<-- =========================== --> | |||
<-- An Option Group --> | |||
<-- =========================== --> | |||
<option_group type = "select_one" name = "flow_resistance_method" default=""> | <option_group type = "select_one" name = "flow_resistance_method" default=""> | ||
<option> | <option> | ||
<assume> law_of_the_wall </assume> | <assume> law_of_the_wall </assume> | ||
<input_var name = "channel_bottom__roughness_length" internal_name = "z0" units="m"> </input_var> | <input_var name = "channel_bottom__roughness_length" internal_name = "z0" units="m"> </input_var> | ||
<output_var> | <output_var> | ||
<name> channel_bed__max_over_domain_of_roughness_length </name> | <name> channel_bed__max_over_domain_of_roughness_length </name> | ||
<units> m </units> | <units> m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_bed__min_over_domain_of_roughness_length </name> | <name> channel_bed__min_over_domain_of_roughness_length </name> | ||
<units> m </units> | <units> m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_bed__roughness_length </name> | <name> channel_bed__roughness_length </name> | ||
Line 54: | Line 57: | ||
</output_var> | </output_var> | ||
</option> | </option> | ||
<option> | <option> | ||
<assume> manning_equation </assume> | <assume> manning_equation </assume> | ||
<input_var name = "manning_coefficient" internal_name="manning_n" units="m-1/3 s"> </input_var> | <input_var name = "manning_coefficient" internal_name="manning_n" units="m-1/3 s"> </input_var> | ||
<output_var> | <output_var> | ||
<name> channel_bed__manning_coefficient </name> | <name> channel_bed__manning_coefficient </name> | ||
<units> m-1/3 s </units> | <units> m-1/3 s </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_bed__max_over_domain_of_manning_coefficient </name> | <name> channel_bed__max_over_domain_of_manning_coefficient </name> | ||
<units> m-1/3 s </units> | <units> m-1/3 s </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_bed__min_over_domain_of_manning_coefficient </name> | <name> channel_bed__min_over_domain_of_manning_coefficient </name> | ||
<units> m-1/3 s </units> | <units> m-1/3 s </units> | ||
</output_var> | </output_var> | ||
</option> | </option> | ||
</option_group> | </option_group> | ||
Line 84: | Line 87: | ||
<assume> prism_shaped </assume> | <assume> prism_shaped </assume> | ||
</object> | </object> | ||
<object name='channel_cross_section'> | <object name='channel_cross_section'> | ||
<assume> trapezoid_shaped </assume> | <assume> trapezoid_shaped </assume> | ||
</object> | </object> | ||
<object name='channel_water' > | <object name='channel_water' > | ||
<assume> mass_conserved </assume> | <assume> mass_conserved </assume> | ||
Line 99: | Line 102: | ||
<assume> turbulent_flow </assume> | <assume> turbulent_flow </assume> | ||
</object> | </object> | ||
<object name='channel_bottom_sediment'> | <object name='channel_bottom_sediment'> | ||
<option> | <option> | ||
Line 113: | Line 116: | ||
<-- Input Variables --> | <-- Input Variables --> | ||
<-- =========================== --> | <-- =========================== --> | ||
<input_var> | <input_var> | ||
<name> glacier__melt_rate </_name> | <name> glacier__melt_rate </_name> | ||
Line 119: | Line 122: | ||
<min> 0 </min> | <min> 0 </min> | ||
</input_var> | </input_var> | ||
<input_var> | <input_var> | ||
<name> land_snow__melt_rate </name> | <name> land_snow__melt_rate </name> | ||
Line 125: | Line 128: | ||
<min> 0 </min> | <min> 0 </min> | ||
</input_var> | </input_var> | ||
<input_var> | <input_var> | ||
<name> land_surface__elevation </name> | <name> land_surface__elevation </name> | ||
Line 131: | Line 134: | ||
<assume> hydrologically_sound </assume> | <assume> hydrologically_sound </assume> | ||
</input_var> | </input_var> | ||
<input_var> | <input_var> | ||
<name> land_water__baseflow_emergence_rate </name> | <name> land_water__baseflow_emergence_rate </name> | ||
Line 137: | Line 140: | ||
<asssume> nonnegative </assume> | <asssume> nonnegative </assume> | ||
</input_var> | </input_var> | ||
<input_var> | <input_var> | ||
<name> land_water__evaporation_rate </name> | <name> land_water__evaporation_rate </name> | ||
<units> m s-1 </units> | <units> m s-1 </units> | ||
</input_var> | </input_var> | ||
<input_var> | <input_var> | ||
<name> land_water__infiltration_rate </name> | <name> land_water__infiltration_rate </name> | ||
<units> m s-1 </units> | <units> m s-1 </units> | ||
</input_var> | </input_var> | ||
<input_var> | <input_var> | ||
<name> water__liquid_equivalent_precipitation_rate </name> | <name> water__liquid_equivalent_precipitation_rate </name> | ||
Line 156: | Line 159: | ||
<-- Output Variables --> | <-- Output Variables --> | ||
<-- =========================== --> | <-- =========================== --> | ||
<output_var> | <output_var> | ||
<name> channel_bottom_surface__slope </name> ### (vs. channel_water_surface__slope) | <name> channel_bottom_surface__slope </name> ### (vs. channel_water_surface__slope) | ||
<units> m/m </units> | <units> m/m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_cross-section__hydraulic_radius </name> ## (insert "water" ?) | <name> channel_cross-section__hydraulic_radius </name> ## (insert "water" ?) | ||
<units> m </units> | <units> m </units> | ||
</output_var> | </output_var> | ||
<output_var> | |||
<name> channel_cross-section_trapezoid_left-bank__flaring_angle </name> | |||
<units> rad </units> | |||
</output_var> | |||
<output_var> | <output_var> | ||
<name> channel_cross- | <name> channel_cross-section_trapezoid_right-bank__flaring_angle </name> | ||
<units> rad </units> | <units> rad </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_cross-section_trapezoid_bottom__width </name> | <name> channel_cross-section_trapezoid_bottom__width </name> | ||
<units> m </units> | <units> m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_water__depth </name> ## (remove "cross_section"?) | <name> channel_water__depth </name> ## (remove "cross_section"?) | ||
Line 183: | Line 191: | ||
<assume> measured_in_zenith_direction </assume> | <assume> measured_in_zenith_direction </assume> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_cross-section_water__mean_flow_speed </name> | <name> channel_cross-section_water__mean_flow_speed </name> | ||
Line 189: | Line 197: | ||
<assume> speed_is_a_volume_flux </assume> | <assume> speed_is_a_volume_flux </assume> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_water__outgoing_volume_flow_rate </name> #### (Need outgoing ??) | <name> channel_water__outgoing_volume_flow_rate </name> #### (Need outgoing ??) | ||
<units> m3 s-1 </units> | <units> m3 s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_water__friction_factor </name> ### What kind? Darcy, Fanning, etc.? | <name> channel_water__friction_factor </name> ### What kind? Darcy, Fanning, etc.? | ||
<units> 1 </units> | <units> 1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_water__froude_number </name> | <name> channel_water__froude_number </name> | ||
<units> 1 </units> | <units> 1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_water_surface__slope </name> | <name> channel_water_surface__slope </name> | ||
<units> m/m </units> | <units> m/m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> channel_water__volume </name> #### (Need "total" ?) | <name> channel_water__volume </name> #### (Need "total" ?) | ||
<units> m3 </units> | <units> m3 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> model__time_step </name> | <name> model__time_step </name> | ||
<units> s </units> | <units> s </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> land_water__runoff_rate </name> | <name> land_water__runoff_rate </name> | ||
<units> m s-1 </units> | <units> m s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__depth </name> | <name> watershed_outlet_water__depth </name> | ||
Line 230: | Line 238: | ||
<assume> depth_is_averaged_over_cross_section </assume> #### | <assume> depth_is_averaged_over_cross_section </assume> #### | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__volume_flow_rate </name> | <name> watershed_outlet_water__volume_flow_rate </name> | ||
<units> m3 s-1 </units> | <units> m3 s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_integral_from_start_of_volume_flow_rate </name> | <name> watershed_outlet_water__time_integral_from_start_of_volume_flow_rate </name> | ||
<units> m3 </units> | <units> m3 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_max_of_depth </name> | <name> watershed_outlet_water__time_max_of_depth </name> | ||
Line 246: | Line 254: | ||
<assume> depth_is_averaged_over_cross_section </assume> ####### | <assume> depth_is_averaged_over_cross_section </assume> ####### | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_max_of_volume_flow_rate </name> | <name> watershed_outlet_water__time_max_of_volume_flow_rate </name> | ||
<units> m3 s-1 </units> | <units> m3 s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_max_of_flow_speed </name> | <name> watershed_outlet_water__time_max_of_flow_speed </name> | ||
Line 257: | Line 265: | ||
<assume> speed_is_averaged_over_cross_section </assume> | <assume> speed_is_averaged_over_cross_section </assume> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__flow_speed </name> | <name> watershed_outlet_water__flow_speed </name> | ||
Line 263: | Line 271: | ||
<assume> speed_is_averaged_over_cross_section </assume> | <assume> speed_is_averaged_over_cross_section </assume> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_of_time_max_of_depth </name> | <name> watershed_outlet_water__time_of_time_max_of_depth </name> | ||
Line 269: | Line 277: | ||
<assume> depth_is_averaged_over_cross_section </assume> ####### | <assume> depth_is_averaged_over_cross_section </assume> ####### | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_of_time_max_of_volume_flow_rate </name> | <name> watershed_outlet_water__time_of_time_max_of_volume_flow_rate </name> | ||
<units> s </units> | <units> s </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_outlet_water__time_of_time_max_of_speed </name> | <name> watershed_outlet_water__time_of_time_max_of_speed </name> | ||
Line 280: | Line 288: | ||
<assume> speed_is_averaged_over_cross_section </assume> | <assume> speed_is_averaged_over_cross_section </assume> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_water__area_time_integral_from_start_of_runoff_rate </name> | <name> watershed_water__area_time_integral_from_start_of_runoff_rate </name> | ||
<units> m3 </units> | <units> m3 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_water__domain_max_of_depth </name> | <name> watershed_water__domain_max_of_depth </name> | ||
<units> m </units> | <units> m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_water__domain_max_of_volume_flow_rate </name> | <name> watershed_water__domain_max_of_volume_flow_rate </name> | ||
<units> m3 s-1 </units> | <units> m3 s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_water__domain_max_of_flow_speed </name> | <name> watershed_water__domain_max_of_flow_speed </name> | ||
<units> m s-1 </units> | <units> m s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_land_water__domain_min_of_depth </name> ###### land or channel or ?? | <name> watershed_land_water__domain_min_of_depth </name> ###### land or channel or ?? | ||
<units> m </units> | <units> m </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_water__domain_min_of_volume_flow_rate </name> | <name> watershed_water__domain_min_of_volume_flow_rate </name> | ||
<units> m3 s-1 </units> | <units> m3 s-1 </units> | ||
</output_var> | </output_var> | ||
<output_var> | <output_var> | ||
<name> watershed_water__domain_min_of_flow_speed </name> | <name> watershed_water__domain_min_of_flow_speed </name> | ||
<units> m s-1 </units> | <units> m s-1 </units> | ||
</output_var> | </output_var> | ||
</var_group> | </var_group> | ||
</model> | </model> | ||
: | : | ||
: | : |
Revision as of 11:15, 10 August 2014
CSDMS Standard Names — Model Coupling Metadata File Examples
- Model Coupling Metadata (MCM) files 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.
- If multiple units are supported, then list them separated by semicolons in the <unts> tag.
- If multiple ranks are supported (often by setting flag in the model's configuration file), then list them separated by semicolons in the <rank> tag.
- The <option_group> tag is used when a model provides multiple methods for doing something. The "type" attribute of the <option_group> tag is then set to one of the following standard strings: "select_one", "select_none_or_more" or "select_one_or_more".
<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>
<-- =========================== --> <-- An Option Group --> <-- =========================== --> <option_group type = "select_one" name = "flow_resistance_method" default=""> <option> <assume> law_of_the_wall </assume> <input_var name = "channel_bottom__roughness_length" internal_name = "z0" units="m"> </input_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_roughness_length </name> <units> m </units> </output_var> <output_var> <name> channel_bed__roughness_length </name> <units> m </units> </output_var> </option> <option> <assume> manning_equation </assume> <input_var name = "manning_coefficient" internal_name="manning_n" units="m-1/3 s"> </input_var> <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__min_over_domain_of_manning_coefficient </name> <units> m-1/3 s </units> </output_var> </option> </option_group>
<-- =========================== --> <-- 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_bottom_sediment'> <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_bottom_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_left-bank__flaring_angle </name> <units> rad </units> </output_var> <output_var> <name> channel_cross-section_trapezoid_right-bank__flaring_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_water__depth </name> ## (remove "cross_section"?) <units> m </units> <assume> average_depth </assume> ##### <assume> measured_in_zenith_direction </assume> </output_var> <output_var> <name> channel_cross-section_water__mean_flow_speed </name> <units> m s-1 </units> <assume> speed_is_a_volume_flux </assume> </output_var> <output_var> <name> channel_water__outgoing_volume_flow_rate </name> #### (Need outgoing ??) <units> m3 s-1 </units> </output_var> <output_var> <name> channel_water__friction_factor </name> ### What kind? Darcy, Fanning, etc.? <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> m/m </units> </output_var> <output_var> <name> channel_water__volume </name> #### (Need "total" ?) <units> m3 </units> </output_var> <output_var> <name> model__time_step </name> <units> s </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__volume_flow_rate </name> <units> m3 s-1 </units> </output_var> <output_var> <name> watershed_outlet_water__time_integral_from_start_of_volume_flow_rate </name> <units> m3 </units> </output_var> <output_var> <name> watershed_outlet_water__time_max_of_depth </name> <units> m </units> <assume> depth_is_averaged_over_cross_section </assume> ####### </output_var> <output_var> <name> watershed_outlet_water__time_max_of_volume_flow_rate </name> <units> m3 s-1 </units> </output_var> <output_var> <name> watershed_outlet_water__time_max_of_flow_speed </name> <units> m s-1 </units> <assume> speed_is_averaged_over_cross_section </assume> </output_var> <output_var> <name> watershed_outlet_water__flow_speed </name> <units> m s-1 </units> <assume> speed_is_averaged_over_cross_section </assume> </output_var> <output_var> <name> watershed_outlet_water__time_of_time_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_time_max_of_volume_flow_rate </name> <units> s </units> </output_var> <output_var> <name> watershed_outlet_water__time_of_time_max_of_speed </name> <units> s </units> <assume> speed_is_averaged_over_cross_section </assume> </output_var> <output_var> <name> watershed_water__area_time_integral_from_start_of_runoff_rate </name> <units> m3 </units> </output_var> <output_var> <name> watershed_water__domain_max_of_depth </name> <units> m </units> </output_var> <output_var> <name> watershed_water__domain_max_of_volume_flow_rate </name> <units> m3 s-1 </units> </output_var> <output_var> <name> watershed_water__domain_max_of_flow_speed </name> <units> m s-1 </units> </output_var> <output_var> <name> watershed_land_water__domain_min_of_depth </name> ###### land or channel or ?? <units> m </units> </output_var> <output_var> <name> watershed_water__domain_min_of_volume_flow_rate </name> <units> m3 s-1 </units> </output_var> <output_var> <name> watershed_water__domain_min_of_flow_speed </name> <units> m s-1 </units> </output_var> </var_group> </model>