CSN MMF Example
From CSDMS
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: 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>
