<p><b>dwj07@fsu.edu</b> 2013-03-22 13:32:26 -0600 (Fri, 22 Mar 2013)</p><p><br>
        -- TRUNK COMMIT --<br>
<br>
        Merging xml_registry branch to trunk.<br>
<br>
        Merges from the trunk need to account for the change in Registry now.<br>
</p><hr noshade><pre><font color="gray">Index: trunk/mpas
===================================================================
--- trunk/mpas        2013-03-22 17:48:50 UTC (rev 2662)
+++ trunk/mpas        2013-03-22 19:32:26 UTC (rev 2663)

Property changes on: trunk/mpas
___________________________________________________________________
Modified: svn:mergeinfo
## -33,3 +33,4 ##
 /branches/scratch_indication:2555-2656
 /branches/source_renaming:1082-1113
 /branches/time_manager:924-962
+/branches/xml_registry:2610-2662
\ No newline at end of property
Modified: trunk/mpas/src/Makefile
===================================================================
--- trunk/mpas/src/Makefile        2013-03-22 17:48:50 UTC (rev 2662)
+++ trunk/mpas/src/Makefile        2013-03-22 19:32:26 UTC (rev 2663)
@@ -10,7 +10,6 @@
 
 all: mpas
 
-
 mpas: reg_includes externals frame ops dycore drver
         $(LINKER) $(LDFLAGS) -o $(CORE)_model.exe driver/*.o -L. -ldycore -lops -lframework $(LIBS) -I./external/esmf_time_f90 -L./external/esmf_time_f90 -lesmf_time
 
@@ -23,7 +22,7 @@
 
 reg_includes: 
         ( cd registry; $(MAKE) CC=&quot;$(SCC)&quot; )
-        ( cd inc; $(CPP) ../core_$(CORE)/Registry | ../registry/parse &gt; Registry.processed)
+        ( cd inc; $(CPP) ../core_$(CORE)/Registry.xml | ../registry/parse &gt; Registry.processed)
 
 frame: reg_includes externals
         ( cd framework; $(MAKE) CPPFLAGS=&quot;$(CPPFLAGS)&quot; CPPINCLUDES=&quot;$(CPPINCLUDES)&quot; all ) 

Copied: trunk/mpas/src/core_hyd_atmos/Registry.xml (from rev 2662, branches/xml_registry/src/core_hyd_atmos/Registry.xml)
===================================================================
--- trunk/mpas/src/core_hyd_atmos/Registry.xml                                (rev 0)
+++ trunk/mpas/src/core_hyd_atmos/Registry.xml        2013-03-22 19:32:26 UTC (rev 2663)
@@ -0,0 +1,179 @@
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;registry&gt;
+        &lt;dims&gt;
+                &lt;dim name=&quot;nCells&quot;/&gt;
+                &lt;dim name=&quot;nEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges2&quot;/&gt;
+                &lt;dim name=&quot;nVertices&quot;/&gt;
+                &lt;dim name=&quot;TWO&quot;                definition=&quot;2&quot;/&gt;
+                &lt;dim name=&quot;vertexDegree&quot;/&gt;
+                &lt;dim name=&quot;FIFTEEN&quot;            definition=&quot;15&quot;/&gt;
+                &lt;dim name=&quot;TWENTYONE&quot;          definition=&quot;21&quot;/&gt;
+                &lt;dim name=&quot;R3&quot;                 definition=&quot;3&quot;/&gt;
+                &lt;dim name=&quot;nVertLevels&quot;        definition=&quot;namelist:config_nvertlevels&quot;/&gt;
+                &lt;dim name=&quot;nVertLevelsP1&quot;      definition=&quot;nVertLevels+1&quot;/&gt;
+        &lt;/dims&gt;
+        &lt;nml_record name=&quot;sw_model&quot;&gt;
+                &lt;nml_option name=&quot;config_test_case&quot;                  type=&quot;integer&quot;       default_value=&quot;5&quot;/&gt;
+                &lt;nml_option name=&quot;config_time_integration&quot;           type=&quot;character&quot;     default_value=&quot;SRK3&quot;/&gt;
+                &lt;nml_option name=&quot;config_dt&quot;                         type=&quot;real&quot;          default_value=&quot;172.8&quot;/&gt;
+                &lt;nml_option name=&quot;config_calendar_type&quot;              type=&quot;character&quot;     default_value=&quot;360day&quot;/&gt;
+                &lt;nml_option name=&quot;config_start_time&quot;                 type=&quot;character&quot;     default_value=&quot;0000-01-01_00:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_stop_time&quot;                  type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_run_duration&quot;               type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_mom_eddy_visc2&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_mom_eddy_visc4&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_v_mom_eddy_visc2&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_theta_eddy_visc2&quot;         type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_theta_eddy_visc4&quot;         type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_v_theta_eddy_visc2&quot;         type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_number_of_sub_steps&quot;        type=&quot;integer&quot;       default_value=&quot;4&quot;/&gt;
+                &lt;nml_option name=&quot;config_theta_adv_order&quot;            type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+                &lt;nml_option name=&quot;config_scalar_adv_order&quot;           type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+                &lt;nml_option name=&quot;config_positive_definite&quot;          type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_monotonic&quot;                  type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_mp_physics&quot;                 type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_apvm_upwinding&quot;             type=&quot;real&quot;          default_value=&quot;0.5&quot;/&gt;
+                &lt;nml_option name=&quot;config_num_halos&quot;                  type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;dimensions&quot;&gt;
+                &lt;nml_option name=&quot;config_nvertlevels&quot;                type=&quot;integer&quot;       default_value=&quot;26&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;io&quot;&gt;
+                &lt;nml_option name=&quot;config_input_name&quot;                 type=&quot;character&quot;     default_value=&quot;grid.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_name&quot;                type=&quot;character&quot;     default_value=&quot;output.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_name&quot;               type=&quot;character&quot;     default_value=&quot;restart.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_interval&quot;            type=&quot;character&quot;     default_value=&quot;06:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_frames_per_outfile&quot;         type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_num_iotasks&quot;            type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_stride&quot;                 type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;decomposition&quot;&gt;
+                &lt;nml_option name=&quot;config_block_decomp_file_prefix&quot;   type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+                &lt;nml_option name=&quot;config_number_of_blocks&quot;           type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_explicit_proc_decomp&quot;       type=&quot;logical&quot;       default_value=&quot;.false.&quot;/&gt;
+                &lt;nml_option name=&quot;config_proc_decomp_file_prefix&quot;    type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;restart&quot;&gt;
+                &lt;nml_option name=&quot;config_do_restart&quot;                 type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_interval&quot;           type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;var_struct name=&quot;state&quot; time_levs=&quot;2&quot;&gt;
+                &lt;var_array name=&quot;scalars&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;qv&quot;                 array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qc&quot;                 array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qr&quot;                 array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                &lt;/var_array&gt;
+                &lt;var name=&quot;xtime&quot;                             type=&quot;text&quot;     dimensions=&quot;Time&quot;                        streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;u&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;theta&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;surface_pressure&quot;                  type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;h&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;ww&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;w&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;pressure&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;geopotential&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;alpha&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;v&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;divergence&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;vorticity&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_edge&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;h_edge&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;ke&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_vertex&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_cell&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;vh&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;circulation&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;/&gt;
+                &lt;var name=&quot;gradPVt&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;gradPVn&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;mesh&quot; time_levs=&quot;0&quot;&gt;
+                &lt;var_array name=&quot;scalars_old&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells&quot;&gt;
+                        &lt;var name=&quot;qv_old&quot;             array_group=&quot;moist_old&quot;/&gt;
+                        &lt;var name=&quot;qc_old&quot;             array_group=&quot;moist_old&quot;/&gt;
+                        &lt;var name=&quot;qr_old&quot;             array_group=&quot;moist_old&quot;/&gt;
+                &lt;/var_array&gt;
+                &lt;var name=&quot;latCell&quot;                           type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonCell&quot;                           type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToCellID&quot;                     type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;latEdge&quot;                           type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonEdge&quot;                           type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToEdgeID&quot;                     type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;latVertex&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonVertex&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToVertexID&quot;                   type=&quot;integer&quot;  dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellsOnEdge&quot;                       type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnCell&quot;                      type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnEdge&quot;                      type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnCell&quot;                       type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnEdge&quot;                       type=&quot;integer&quot;  dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;weightsOnEdge&quot;                     type=&quot;real&quot;     dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dvEdge&quot;                            type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dcEdge&quot;                            type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;angleEdge&quot;                         type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;areaCell&quot;                          type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;areaTriangle&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgeNormalVectors&quot;                 type=&quot;real&quot;     dimensions=&quot;R3 nEdges&quot;                   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;localVerticalUnitVectors&quot;          type=&quot;real&quot;     dimensions=&quot;R3 nCells&quot;                   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;cellTangentPlane&quot;                  type=&quot;real&quot;     dimensions=&quot;R3 TWO nCells&quot;               streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;cellsOnCell&quot;                       type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;verticesOnCell&quot;                    type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;verticesOnEdge&quot;                    type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnVertex&quot;                     type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellsOnVertex&quot;                     type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;kiteAreasOnVertex&quot;                 type=&quot;real&quot;     dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;h_s&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rdnu&quot;                              type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rdnw&quot;                              type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fnm&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fnp&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dbn&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dnu&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dnw&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;uhAvg&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges&quot;/&gt;
+                &lt;var name=&quot;wwAvg&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;/&gt;
+                &lt;var name=&quot;qtot&quot;                              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;/&gt;
+                &lt;var name=&quot;cqu&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges&quot;/&gt;
+                &lt;var name=&quot;h_diabatic&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;/&gt;
+                &lt;var name=&quot;dpsdt&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;/&gt;
+                &lt;var name=&quot;u_old&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges&quot;/&gt;
+                &lt;var name=&quot;ww_old&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;/&gt;
+                &lt;var name=&quot;theta_old&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;/&gt;
+                &lt;var name=&quot;h_edge_old&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges&quot;/&gt;
+                &lt;var name=&quot;h_old&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;/&gt;
+                &lt;var name=&quot;pressure_old&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;/&gt;
+                &lt;var name=&quot;deriv_two&quot;                         type=&quot;real&quot;     dimensions=&quot;FIFTEEN TWO nEdges&quot;          streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;advCells&quot;                          type=&quot;integer&quot;  dimensions=&quot;TWENTYONE nCells&quot;/&gt;
+                &lt;var name=&quot;coeffs_reconstruct&quot;                type=&quot;real&quot;     dimensions=&quot;R3 maxEdges nCells&quot;/&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;diag&quot; time_levs=&quot;1&quot;&gt;
+                &lt;var name=&quot;uReconstructX&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructY&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZ&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZonal&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructMeridional&quot;            type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;tend&quot; time_levs=&quot;1&quot;&gt;
+                &lt;var_array name=&quot;scalars&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;tend_qv&quot;            array_group=&quot;moist&quot;        name_in_code=&quot;qv&quot;/&gt;
+                        &lt;var name=&quot;tend_qc&quot;            array_group=&quot;moist&quot;        name_in_code=&quot;qc&quot;/&gt;
+                        &lt;var name=&quot;tend_qr&quot;            array_group=&quot;moist&quot;        name_in_code=&quot;qr&quot;/&gt;
+                &lt;/var_array&gt;
+                &lt;var name=&quot;tend_h&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;    name_in_code=&quot;h&quot;/&gt;
+                &lt;var name=&quot;tend_u&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;    name_in_code=&quot;u&quot;/&gt;
+                &lt;var name=&quot;tend_vh&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;    name_in_code=&quot;vh&quot;/&gt;
+                &lt;var name=&quot;tend_theta&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;    name_in_code=&quot;theta&quot;/&gt;
+        &lt;/var_struct&gt;
+&lt;/registry&gt;

Copied: trunk/mpas/src/core_init_nhyd_atmos/Registry.xml (from rev 2662, branches/xml_registry/src/core_init_nhyd_atmos/Registry.xml)
===================================================================
--- trunk/mpas/src/core_init_nhyd_atmos/Registry.xml                                (rev 0)
+++ trunk/mpas/src/core_init_nhyd_atmos/Registry.xml        2013-03-22 19:32:26 UTC (rev 2663)
@@ -0,0 +1,279 @@
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;registry&gt;
+
+&lt;!-- **************************************************************************************** --&gt;
+&lt;!-- ************************************** Dimensions ************************************** --&gt;
+&lt;!-- **************************************************************************************** --&gt;
+
+        &lt;dims&gt;
+                &lt;dim name=&quot;nCells&quot;/&gt;
+                &lt;dim name=&quot;nEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges2&quot;/&gt;
+                &lt;dim name=&quot;nVertices&quot;/&gt;
+                &lt;dim name=&quot;TWO&quot;                definition=&quot;2&quot;/&gt;
+                &lt;dim name=&quot;THREE&quot;              definition=&quot;3&quot;/&gt;
+                &lt;dim name=&quot;vertexDegree&quot;/&gt;
+                &lt;dim name=&quot;FIFTEEN&quot;            definition=&quot;15&quot;/&gt;
+                &lt;dim name=&quot;TWENTYONE&quot;          definition=&quot;21&quot;/&gt;
+                &lt;dim name=&quot;R3&quot;                 definition=&quot;3&quot;/&gt;
+                &lt;dim name=&quot;nVertLevels&quot;        definition=&quot;namelist:config_nvertlevels&quot;/&gt;
+                &lt;dim name=&quot;nSoilLevels&quot;        definition=&quot;namelist:config_nsoillevels&quot;/&gt;
+                &lt;dim name=&quot;nFGLevels&quot;          definition=&quot;namelist:config_nfglevels&quot;/&gt;
+                &lt;dim name=&quot;nFGSoilLevels&quot;      definition=&quot;namelist:config_nfgsoillevels&quot;/&gt;
+                &lt;dim name=&quot;nVertLevelsP1&quot;      definition=&quot;nVertLevels+1&quot;/&gt;
+                &lt;dim name=&quot;nMonths&quot;            definition=&quot;namelist:config_months&quot;/&gt;
+        &lt;/dims&gt;
+
+
+&lt;!-- **************************************************************************************** --&gt;
+&lt;!-- ************************************** Namelists *************************************** --&gt;
+&lt;!-- **************************************************************************************** --&gt;
+
+        &lt;nml_record name=&quot;nhyd_model&quot;&gt;
+                &lt;nml_option name=&quot;config_test_case&quot;             type=&quot;integer&quot;       default_value=&quot;7&quot;/&gt;
+                &lt;nml_option name=&quot;config_calendar_type&quot;         type=&quot;character&quot;     default_value=&quot;gregorian&quot;/&gt;
+                &lt;nml_option name=&quot;config_start_time&quot;            type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_stop_time&quot;             type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_theta_adv_order&quot;       type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_coef_3rd_order&quot;        type=&quot;real&quot;          default_value=&quot;0.25&quot;/&gt;
+                &lt;nml_option name=&quot;config_num_halos&quot;             type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;dcmip&quot;&gt;
+                &lt;nml_option name=&quot;config_dcmip_case&quot;            type=&quot;character&quot;     default_value=&quot;2-0-0&quot;/&gt;
+                &lt;nml_option name=&quot;config_planet_scale&quot;          type=&quot;real&quot;          default_value=&quot;1.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_rotation_rate_scale&quot;   type=&quot;real&quot;          default_value=&quot;1.0&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;dimensions&quot;&gt;
+                &lt;nml_option name=&quot;config_nvertlevels&quot;           type=&quot;integer&quot;       default_value=&quot;26&quot;/&gt;
+                &lt;nml_option name=&quot;config_nsoillevels&quot;           type=&quot;integer&quot;       default_value=&quot;4&quot;/&gt;
+                &lt;nml_option name=&quot;config_nfglevels&quot;             type=&quot;integer&quot;       default_value=&quot;27&quot;/&gt;
+                &lt;nml_option name=&quot;config_nfgsoillevels&quot;         type=&quot;integer&quot;       default_value=&quot;4&quot;/&gt;
+                &lt;nml_option name=&quot;config_months&quot;                type=&quot;integer&quot;       default_value=&quot;12&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;data_sources&quot;&gt;
+                &lt;nml_option name=&quot;config_geog_data_path&quot;        type=&quot;character&quot;     default_value=&quot;/mmm/users/wrfhelp/WPS_GEOG/&quot;/&gt;
+                &lt;nml_option name=&quot;config_met_prefix&quot;            type=&quot;character&quot;     default_value=&quot;FILE&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfc_prefix&quot;            type=&quot;character&quot;     default_value=&quot;FILE&quot;/&gt;
+                &lt;nml_option name=&quot;config_fg_interval&quot;           type=&quot;integer&quot;       default_value=&quot;21600&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;vertical_grid&quot;&gt;
+                &lt;nml_option name=&quot;config_ztop&quot;                  type=&quot;real&quot;          default_value=&quot;28000.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_nsmterrain&quot;            type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+                &lt;nml_option name=&quot;config_smooth_surfaces&quot;       type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;preproc_stages&quot;&gt;
+                &lt;nml_option name=&quot;config_static_interp&quot;         type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_vertical_grid&quot;         type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_met_interp&quot;            type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_input_sst&quot;             type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_frac_seaice&quot;           type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;io&quot;&gt;
+                &lt;nml_option name=&quot;config_input_name&quot;            type=&quot;character&quot;     default_value=&quot;grid.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfc_update_name&quot;       type=&quot;character&quot;     default_value=&quot;sfc_update.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_name&quot;           type=&quot;character&quot;     default_value=&quot;init.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_name&quot;          type=&quot;character&quot;     default_value=&quot;restart.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_frames_per_outfile&quot;    type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_num_iotasks&quot;       type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_stride&quot;            type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;decomposition&quot;&gt;
+                &lt;nml_option name=&quot;config_block_decomp_file_prefix&quot;   type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+                &lt;nml_option name=&quot;config_number_of_blocks&quot;           type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_explicit_proc_decomp&quot;       type=&quot;logical&quot;       default_value=&quot;.false.&quot;/&gt;
+                &lt;nml_option name=&quot;config_proc_decomp_file_prefix&quot;    type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;restart&quot;&gt;
+                &lt;nml_option name=&quot;config_restart_interval&quot;      type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_do_restart&quot;            type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_time&quot;          type=&quot;real&quot;          default_value=&quot;172800.0&quot;/&gt;
+        &lt;/nml_record&gt;
+
+
+&lt;!-- **************************************************************************************** --&gt;
+&lt;!-- ************************************** Variables *************************************** --&gt;
+&lt;!-- **************************************************************************************** --&gt;
+
+        &lt;var_struct name=&quot;mesh&quot; time_levs=&quot;0&quot;&gt;
+                &lt;var name=&quot;latCell&quot;                      type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;lonCell&quot;                      type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;xCell&quot;                        type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;yCell&quot;                        type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zCell&quot;                        type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;indexToCellID&quot;                type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;latEdge&quot;                      type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;lonEdge&quot;                      type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;xEdge&quot;                        type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;yEdge&quot;                        type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zEdge&quot;                        type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;indexToEdgeID&quot;                type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;latVertex&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;lonVertex&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;xVertex&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;yVertex&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zVertex&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;indexToVertexID&quot;              type=&quot;integer&quot;  dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cellsOnEdge&quot;                  type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnCell&quot;                 type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnEdge&quot;                 type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;edgesOnCell&quot;                  type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;edgesOnEdge&quot;                  type=&quot;integer&quot;  dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;weightsOnEdge&quot;                type=&quot;real&quot;     dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;dvEdge&quot;                       type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;dcEdge&quot;                       type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;angleEdge&quot;                    type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;areaCell&quot;                     type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;areaTriangle&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;edgeNormalVectors&quot;            type=&quot;real&quot;     dimensions=&quot;R3 nEdges&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;localVerticalUnitVectors&quot;     type=&quot;real&quot;     dimensions=&quot;R3 nCells&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cellTangentPlane&quot;             type=&quot;real&quot;     dimensions=&quot;R3 TWO nCells&quot;               streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cellsOnCell&quot;                  type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;verticesOnCell&quot;               type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;verticesOnEdge&quot;               type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;edgesOnVertex&quot;                type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cellsOnVertex&quot;                type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;kiteAreasOnVertex&quot;            type=&quot;real&quot;     dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;fEdge&quot;                        type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;fVertex&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;meshDensity&quot;                  type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+
+                &lt;!-- coefficients for vertical extrapolation to the surface --&gt;
+                &lt;var name=&quot;cf1&quot;                          type=&quot;real&quot;     dimensions=&quot;&quot;                            streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cf2&quot;                          type=&quot;real&quot;     dimensions=&quot;&quot;                            streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cf3&quot;                          type=&quot;real&quot;     dimensions=&quot;&quot;                            streams=&quot;io&quot;/&gt;
+
+                &lt;!-- static terrestrial fields --&gt;
+                &lt;var name=&quot;ter&quot;                                  type=&quot;real&quot;     dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;landmask&quot;                             type=&quot;integer&quot;  dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;ivgtyp&quot;   name_in_code=&quot;lu_index&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;isltyp&quot;   name_in_code=&quot;soilcat_top&quot;  type=&quot;integer&quot;  dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;soilcat_bot&quot;                          type=&quot;integer&quot;  dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;snoalb&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;soiltemp&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;greenfrac&quot;                            type=&quot;real&quot;     dimensions=&quot;nMonths nCells&quot;      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;shdmin&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;shdmax&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells&quot;              streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;albedo12m&quot;                            type=&quot;real&quot;     dimensions=&quot;nMonths nCells&quot;      streams=&quot;io&quot;/&gt;
+
+                &lt;!-- description of the vertical grid structure --&gt;
+                &lt;var name=&quot;hx&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;        streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zgrid&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;        streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;rdzw&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;dzu&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;rdzu&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;fzm&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;fzp&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zx&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nEdges&quot;        streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zz&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;        streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zb&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 TWO nEdges&quot;    streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zb3&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 TWO nEdges&quot;    streams=&quot;io&quot;/&gt;
+
+                &lt;!-- W-Rayleigh damping coefficient --&gt;
+                &lt;var name=&quot;dss&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;io&quot;/&gt;
+
+                &lt;var name=&quot;u_init&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;t_init&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;qv_init&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;io&quot;/&gt;
+
+                &lt;!-- variables needed for advection --&gt;
+                &lt;var name=&quot;deriv_two&quot;                  type=&quot;real&quot;     dimensions=&quot;FIFTEEN TWO nEdges&quot;          streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;advCells&quot;                   type=&quot;integer&quot;  dimensions=&quot;TWENTYONE nCells&quot;            streams=&quot;io&quot;/&gt;
+
+                &lt;!-- deformation calculation weights --&gt;
+                &lt;var name=&quot;defc_a&quot;                     type=&quot;real&quot;     dimensions=&quot;maxEdges nCells&quot;             streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;defc_b&quot;                     type=&quot;real&quot;     dimensions=&quot;maxEdges nCells&quot;             streams=&quot;io&quot;/&gt;
+
+                &lt;!-- arrays required for reconstruction of velocity field --&gt;
+                &lt;var name=&quot;coeffs_reconstruct&quot;         type=&quot;real&quot;     dimensions=&quot;R3 maxEdges nCells&quot;          streams=&quot;io&quot;/&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;state&quot; time_levs=&quot;2&quot;&gt;
+                &lt;var name=&quot;xtime&quot;                      type=&quot;text&quot;     dimensions=&quot;Time&quot;                        streams=&quot;so&quot;/&gt;
+                &lt;var name=&quot;u&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;w&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;rho_zz&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;theta_m&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+
+                &lt;var_array name=&quot;scalars&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;qv&quot;      array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;qc&quot;      array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;qr&quot;      array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                &lt;/var_array&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;fg&quot; time_levs=&quot;1&quot;&gt;
+                
+                &lt;!-- horizontally interpolated from first-guess data --&gt;
+                &lt;var name=&quot;u_fg&quot;       name_in_code=&quot;u&quot;       type=&quot;real&quot;     dimensions=&quot;nFGLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;v_fg&quot;       name_in_code=&quot;v&quot;       type=&quot;real&quot;     dimensions=&quot;nFGLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;t_fg&quot;       name_in_code=&quot;t&quot;       type=&quot;real&quot;     dimensions=&quot;nFGLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;p_fg&quot;       name_in_code=&quot;p&quot;       type=&quot;real&quot;     dimensions=&quot;nFGLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;z_fg&quot;       name_in_code=&quot;z&quot;       type=&quot;real&quot;     dimensions=&quot;nFGLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;rh_fg&quot;      name_in_code=&quot;rh&quot;      type=&quot;real&quot;     dimensions=&quot;nFGLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;soilz_fg&quot;   name_in_code=&quot;soilz&quot;   type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;psfc_fg&quot;    name_in_code=&quot;psfc&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;/&gt;
+                &lt;var name=&quot;pmsl_fg&quot;    name_in_code=&quot;pmsl&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;/&gt;
+                &lt;var name=&quot;dz_fg&quot;                             type=&quot;real&quot;     dimensions=&quot;nFGSoilLevels nCells Time&quot;   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;dzs_fg&quot;                            type=&quot;real&quot;     dimensions=&quot;nFGSoilLevels nCells Time&quot;   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zs_fg&quot;                             type=&quot;real&quot;     dimensions=&quot;nFGSoilLevels nCells Time&quot;   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;st_fg&quot;                             type=&quot;real&quot;     dimensions=&quot;nFGSoilLevels nCells Time&quot;   streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;sm_fg&quot;                             type=&quot;real&quot;     dimensions=&quot;nFGSoilLevels nCells Time&quot;   streams=&quot;io&quot;/&gt;
+
+                &lt;!-- horizontally interpolated from first-guess data, and should be read in by model --&gt;
+                &lt;var name=&quot;dz&quot;                                type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;dzs&quot;                               type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;zs&quot;                                type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;sh2o&quot;                              type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;smois&quot;                             type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;tslb&quot;                              type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;smcrel&quot;                            type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;tmn&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;skintemp&quot;                          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;sst&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iso&quot;/&gt;
+                &lt;var name=&quot;snow&quot;                              type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;snowc&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;snowh&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;xice&quot;                              type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iso&quot;/&gt;
+                &lt;var name=&quot;seaice&quot;                            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;gfs_z&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;vegfra&quot;                            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;sfc_albbck&quot;                        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;xland&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;diag&quot; time_levs=&quot;1&quot;&gt;
+                &lt;var name=&quot;pressure_p&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;rho&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;theta&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;v&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructX&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructY&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZ&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZonal&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructMeridional&quot;            type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;exner&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;exner_base&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;rtheta_base&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;pressure&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;pressure_base&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;rho_base&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;theta_base&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;cqw&quot;                               type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;surface_pressure&quot;                  type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;io&quot;/&gt;
+
+                &lt;!-- coupled variables needed by the solver, but not output --&gt;
+                &lt;var name=&quot;ru&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;rw&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;/&gt;
+                &lt;var name=&quot;rtheta_p&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;rho_p&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+        &lt;/var_struct&gt;
+&lt;/registry&gt;

Copied: trunk/mpas/src/core_nhyd_atmos/Registry.xml (from rev 2662, branches/xml_registry/src/core_nhyd_atmos/Registry.xml)
===================================================================
--- trunk/mpas/src/core_nhyd_atmos/Registry.xml                                (rev 0)
+++ trunk/mpas/src/core_nhyd_atmos/Registry.xml        2013-03-22 19:32:26 UTC (rev 2663)
@@ -0,0 +1,917 @@
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;registry&gt;
+
+&lt;!-- **************************************************************************************** --&gt;
+&lt;!-- ************************************** Dimensions ************************************** --&gt;
+&lt;!-- **************************************************************************************** --&gt;
+
+        &lt;dims&gt;
+                &lt;dim name=&quot;nCells&quot;/&gt;
+                &lt;dim name=&quot;nEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges2&quot;/&gt;
+                &lt;dim name=&quot;nVertices&quot;/&gt;
+                &lt;dim name=&quot;TWO&quot;                definition=&quot;2&quot;/&gt;
+                &lt;dim name=&quot;THREE&quot;              definition=&quot;3&quot;/&gt;
+                &lt;dim name=&quot;vertexDegree&quot;/&gt;
+                &lt;dim name=&quot;FIFTEEN&quot;            definition=&quot;15&quot;/&gt;
+                &lt;dim name=&quot;TWENTYONE&quot;          definition=&quot;21&quot;/&gt;
+                &lt;dim name=&quot;R3&quot;                 definition=&quot;3&quot;/&gt;
+                &lt;dim name=&quot;nVertLevels&quot;/&gt;
+                &lt;dim name=&quot;nVertLevelsP1&quot;      definition=&quot;nVertLevels+1&quot;/&gt;
+                &lt;dim name=&quot;nMonths&quot;            definition=&quot;namelist:months&quot;/&gt;
+                &lt;dim name=&quot;nSoilLevels&quot;        definition=&quot;namelist:num_soil_layers&quot;/&gt;
+                &lt;dim name=&quot;nLags&quot;              definition=&quot;namelist:input_soil_temperature_lag&quot;/&gt;
+                &lt;dim name=&quot;nOznLevels&quot;         definition=&quot;namelist:noznlev&quot;/&gt;
+                &lt;dim name=&quot;nAerLevels&quot;         definition=&quot;namelist:naerlev&quot;/&gt;
+                &lt;dim name=&quot;cam_dim1&quot;           definition=&quot;namelist:camdim1&quot;/&gt;
+                &lt;dim name=&quot;nVertLevelsP2&quot;      definition=&quot;nVertLevels+2&quot;/&gt;
+        &lt;/dims&gt;
+
+
+&lt;!-- **************************************************************************************** --&gt;
+&lt;!-- ************************************** Namelists *************************************** --&gt;
+&lt;!-- **************************************************************************************** --&gt;
+
+        &lt;nml_record name=&quot;nhyd_model&quot;&gt;
+                &lt;nml_option name=&quot;config_time_integration&quot;           type=&quot;character&quot;     default_value=&quot;SRK3&quot;/&gt;
+                &lt;nml_option name=&quot;config_dt&quot;                         type=&quot;real&quot;          default_value=&quot;600.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_calendar_type&quot;              type=&quot;character&quot;     default_value=&quot;gregorian&quot;/&gt;
+                &lt;nml_option name=&quot;config_start_time&quot;                 type=&quot;character&quot;     default_value=&quot;0000-01-01_00:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_stop_time&quot;                  type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_run_duration&quot;               type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfc_update_interval&quot;        type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_horiz_mixing&quot;               type=&quot;character&quot;     default_value=&quot;2d_smagorinsky&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_mom_eddy_visc2&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_mom_eddy_visc4&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_v_mom_eddy_visc2&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_theta_eddy_visc2&quot;         type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_theta_eddy_visc4&quot;         type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_v_theta_eddy_visc2&quot;         type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_number_of_sub_steps&quot;        type=&quot;integer&quot;       default_value=&quot;4&quot;/&gt;
+                &lt;nml_option name=&quot;config_w_adv_order&quot;                type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_theta_adv_order&quot;            type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_scalar_adv_order&quot;           type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_u_vadv_order&quot;               type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_w_vadv_order&quot;               type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_theta_vadv_order&quot;           type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_scalar_vadv_order&quot;          type=&quot;integer&quot;       default_value=&quot;3&quot;/&gt;
+                &lt;nml_option name=&quot;config_coef_3rd_order&quot;             type=&quot;real&quot;          default_value=&quot;0.25&quot;/&gt;
+                &lt;nml_option name=&quot;config_scalar_advection&quot;           type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_positive_definite&quot;          type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_monotonic&quot;                  type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_mix_full&quot;                   type=&quot;logical&quot;       default_value=&quot;true&quot;/&gt;
+                &lt;nml_option name=&quot;config_len_disp&quot;                   type=&quot;real&quot;          default_value=&quot;120000.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_epssm&quot;                      type=&quot;real&quot;          default_value=&quot;0.1&quot;/&gt;
+                &lt;nml_option name=&quot;config_smdiv&quot;                      type=&quot;real&quot;          default_value=&quot;0.1&quot;/&gt;
+                &lt;nml_option name=&quot;config_newpx&quot;                      type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_apvm_upwinding&quot;             type=&quot;real&quot;          default_value=&quot;0.5&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_ScaleWithMesh&quot;            type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_num_halos&quot;                  type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;damping&quot;&gt;
+                &lt;nml_option name=&quot;config_zd&quot;                         type=&quot;real&quot;          default_value=&quot;22000.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_xnutr&quot;                      type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;io&quot;&gt;
+                &lt;nml_option name=&quot;config_input_name&quot;                 type=&quot;character&quot;     default_value=&quot;init.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfc_update_name&quot;            type=&quot;character&quot;     default_value=&quot;sfc_update.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_name&quot;                type=&quot;character&quot;     default_value=&quot;output.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_name&quot;               type=&quot;character&quot;     default_value=&quot;restart.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_interval&quot;            type=&quot;character&quot;     default_value=&quot;06:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_frames_per_outfile&quot;         type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_num_iotasks&quot;            type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_stride&quot;                 type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;decomposition&quot;&gt;
+                &lt;nml_option name=&quot;config_block_decomp_file_prefix&quot;   type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+                &lt;nml_option name=&quot;config_number_of_blocks&quot;           type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_explicit_proc_decomp&quot;       type=&quot;logical&quot;       default_value=&quot;.false.&quot;/&gt;
+                &lt;nml_option name=&quot;config_proc_decomp_file_prefix&quot;    type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;nml_record name=&quot;restart&quot;&gt;
+                &lt;nml_option name=&quot;config_do_restart&quot;                 type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_do_DAcycling&quot;               type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_interval&quot;           type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+        &lt;/nml_record&gt;
+
+
+&lt;!-- **************************************************************************************** --&gt;
+&lt;!-- ************************************** Variables *************************************** --&gt;
+&lt;!-- **************************************************************************************** --&gt;
+
+        &lt;var_struct name=&quot;mesh&quot; time_levs=&quot;0&quot;&gt;
+
+                &lt;!-- horizontal grid structure --&gt;
+                &lt;var name=&quot;latCell&quot;                   type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonCell&quot;                   type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xCell&quot;                     type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yCell&quot;                     type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zCell&quot;                     type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToCellID&quot;             type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;latEdge&quot;                   type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonEdge&quot;                   type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xEdge&quot;                     type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yEdge&quot;                     type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zEdge&quot;                     type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToEdgeID&quot;             type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;latVertex&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonVertex&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xVertex&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yVertex&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zVertex&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToVertexID&quot;           type=&quot;integer&quot;  dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellsOnEdge&quot;               type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnCell&quot;              type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnEdge&quot;              type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnCell&quot;               type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnEdge&quot;               type=&quot;integer&quot;  dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;weightsOnEdge&quot;             type=&quot;real&quot;     dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dvEdge&quot;                    type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dcEdge&quot;                    type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;angleEdge&quot;                 type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;areaCell&quot;                  type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;areaTriangle&quot;              type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgeNormalVectors&quot;         type=&quot;real&quot;     dimensions=&quot;R3 nEdges&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;localVerticalUnitVectors&quot;  type=&quot;real&quot;     dimensions=&quot;R3 nCells&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellTangentPlane&quot;          type=&quot;real&quot;     dimensions=&quot;R3 TWO nCells&quot;               streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellsOnCell&quot;               type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;verticesOnCell&quot;            type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;verticesOnEdge&quot;            type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnVertex&quot;             type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellsOnVertex&quot;             type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;kiteAreasOnVertex&quot;         type=&quot;real&quot;     dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fEdge&quot;                     type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fVertex&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;meshDensity&quot;               type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;meshScalingDel2&quot;           type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;meshScalingDel4&quot;           type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- coefficients for vertical extrapolation to the surface --&gt;
+                &lt;var name=&quot;cf1&quot;                       type=&quot;real&quot;     dimensions=&quot;&quot;                            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cf2&quot;                       type=&quot;real&quot;     dimensions=&quot;&quot;                            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cf3&quot;                       type=&quot;real&quot;     dimensions=&quot;&quot;                            streams=&quot;iro&quot;/&gt;
+
+                &lt;!-- coefficients used by &quot;newpx&quot; horizontal pressure gradient option --&gt;
+                &lt;var name=&quot;cpr&quot;                       type=&quot;real&quot;     dimensions=&quot;THREE nEdges&quot;                streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cpl&quot;                       type=&quot;real&quot;     dimensions=&quot;THREE nEdges&quot;                streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- description of the vertical grid structure --&gt;
+                &lt;var name=&quot;hx&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;        streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zgrid&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;        streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rdzw&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dzu&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rdzu&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fzm&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fzp&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zx&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nEdges&quot;        streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zz&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells&quot;        streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zb&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 TWO nEdges&quot;    streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zb3&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 TWO nEdges&quot;    streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;pzm&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;pzp&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;r&quot;/&gt;
+
+                &lt;!-- W-Rayleigh damping coefficients --&gt;
+                &lt;var name=&quot;dss&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;iro&quot;/&gt;
+
+                &lt;var name=&quot;u_init&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;t_init&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;qv_init&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels&quot;                 streams=&quot;iro&quot;/&gt;
+
+                &lt;!-- Space needed for advection --&gt;
+                &lt;var name=&quot;deriv_two&quot;                 type=&quot;real&quot;     dimensions=&quot;FIFTEEN TWO nEdges&quot;          streams=&quot;ir&quot;/&gt;
+                &lt;var name=&quot;advCells&quot;                  type=&quot;integer&quot;  dimensions=&quot;TWENTYONE nCells&quot;            streams=&quot;ir&quot;/&gt;
+                &lt;var name=&quot;adv_coefs&quot;                 type=&quot;real&quot;     dimensions=&quot;FIFTEEN nEdges&quot;/&gt;
+                &lt;var name=&quot;adv_coefs_3rd&quot;             type=&quot;real&quot;     dimensions=&quot;FIFTEEN nEdges&quot;/&gt;
+                &lt;var name=&quot;advCellsForEdge&quot;           type=&quot;integer&quot;  dimensions=&quot;FIFTEEN nEdges&quot;/&gt;
+                &lt;var name=&quot;nAdvCellsForEdge&quot;          type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;/&gt;
+
+                &lt;!-- Space needed for deformation calculation weights --&gt;
+                &lt;var name=&quot;defc_a&quot;                    type=&quot;real&quot;     dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;defc_b&quot;                    type=&quot;real&quot;     dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+
+                &lt;!-- Arrays required for reconstruction of velocity field --&gt;
+                &lt;var name=&quot;coeffs_reconstruct&quot;        type=&quot;real&quot;     dimensions=&quot;R3 maxEdges nCells&quot;          streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;east&quot;                      type=&quot;real&quot;     dimensions=&quot;R3 nCells&quot;                   streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;north&quot;                     type=&quot;real&quot;     dimensions=&quot;R3 nCells&quot;                   streams=&quot;r&quot;/&gt;
+
+                &lt;!-- Arrays needed only in the CAM LW and SW radiation codes: Ozone --&gt;
+                &lt;var name=&quot;pin&quot;                       type=&quot;real&quot;     dimensions=&quot;nOznLevels nCells&quot;/&gt;
+                &lt;var name=&quot;ozmixm&quot;                    type=&quot;real&quot;     dimensions=&quot;nMonths nOznLevels nCells&quot;/&gt;
+
+                &lt;!-- Arrays needed only in the CAM LW and SW radiation codes: Aerosols --&gt;
+                &lt;var name=&quot;m_hybi&quot;                    type=&quot;real&quot;     dimensions=&quot;nAerLevels nCells&quot;/&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;state&quot; time_levs=&quot;2&quot;&gt;
+
+                &lt;var name=&quot;xtime&quot;     type=&quot;text&quot;     dimensions=&quot;Time&quot;                        streams=&quot;iro&quot;/&gt;
+
+                &lt;!-- Prognostic variables: read from input, saved in restart, and written to output --&gt;
+                &lt;var name=&quot;u&quot;         type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;w&quot;         type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rho_zz&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;theta_m&quot;   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;m_ps&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;/&gt;
+                &lt;var_array name=&quot;scalars&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;qv&quot;      array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qc&quot;      array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qr&quot;      array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qi&quot;      array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qs&quot;      array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qg&quot;      array_group=&quot;moist&quot;       streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qnr&quot;     array_group=&quot;number&quot;      streams=&quot;iro&quot;/&gt;
+                        &lt;var name=&quot;qni&quot;     array_group=&quot;number&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;/var_array&gt;
+
+                &lt;var_array name=&quot;aerosols&quot; type=&quot;real&quot; dimensions=&quot;nAerLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;sul&quot;     array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;sslt&quot;    array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;dust1&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;dust2&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;dust3&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;dust4&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;ocpho&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;bcpho&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;ocphi&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;bcphi&quot;   array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;bg&quot;      array_group=&quot;aer_cam&quot;/&gt;
+                        &lt;var name=&quot;volc&quot;    array_group=&quot;aer_cam&quot;/&gt;
+                &lt;/var_array&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;diag&quot; time_levs=&quot;1&quot;&gt;
+
+                &lt;!-- coefficients for the vertical tridiagonal solve --&gt;
+                &lt;!-- Note:  these could be local but...              --&gt;
+                &lt;var name=&quot;cofrz&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels Time&quot;/&gt;
+                &lt;var name=&quot;cofwr&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;cofwz&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;coftz&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;/&gt;
+                &lt;var name=&quot;cofwt&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;a_tri&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;alpha_tri&quot;               type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;gamma_tri&quot;               type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+
+                &lt;!-- state variables diagnosed from prognostic state --&gt;
+                &lt;var name=&quot;pressure_p&quot;              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- Diagnostic fields: only written to output                                                           --&gt;
+                &lt;!-- NOTE: added the &quot;r&quot; option to rho,theta,uReconstructZonal,and uReconstructMeridional for use of the --&gt;
+                &lt;!-- non-hydrostatic dynamical core in a data assimilation framework. NOTE that the &quot;r&quot; option is not    --&gt;
+                &lt;!-- needed for those 4 variables to get bit for bit restart capabilities, otherwise.                    --&gt;
+                &lt;var name=&quot;rho&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;theta&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rh&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;v&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;divergence&quot;              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;vorticity&quot;               type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_edge&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;rho_edge&quot;                type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;ke&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_vertex&quot;               type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_cell&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+
+                &lt;!-- reconstructed horizontal velocity vectors at cell centers --&gt;
+                &lt;var name=&quot;uReconstructX&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructY&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZ&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZonal&quot;       type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;uReconstructMeridional&quot;  type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- Other diagnostic variables --&gt;
+                &lt;var name=&quot;rv&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;circulation&quot;             type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;gradPVt&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;gradPVn&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;h_divergence&quot;            type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+
+                &lt;var name=&quot;exner&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;exner_base&quot;              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rtheta_base&quot;             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;pressure_base&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;rho_base&quot;                type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;theta_base&quot;              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+
+                &lt;var name=&quot;ruAvg&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;wwAvg&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;/&gt;
+                &lt;var name=&quot;cqu&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;cqw&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+
+                &lt;!-- coupled variables needed by solver, but not output --&gt;
+                &lt;var name=&quot;ru&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;ru_p&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;ru_save&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+
+                &lt;var name=&quot;rw&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;rw_p&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;rw_save&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;/&gt;
+
+                &lt;var name=&quot;rtheta_p&quot;                type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;rtheta_pp&quot;               type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;rtheta_p_save&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;rtheta_pp_old&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+
+                &lt;var name=&quot;rho_p&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;rho_pp&quot;                  type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;rho_p_save&quot;              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+
+                &lt;var name=&quot;kdiff&quot;                   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+
+                &lt;var name=&quot;surface_pressure&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;surface_temperature&quot;     type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;tend&quot; time_levs=&quot;1&quot;&gt;
+
+                
+                &lt;!-- tendencies for prognostic variables --&gt;
+                &lt;var name=&quot;tend_u&quot;             name_in_code=&quot;u&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;tend_w&quot;             name_in_code=&quot;w&quot;           type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;tend_rho&quot;           name_in_code=&quot;rho_zz&quot;      type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;tend_theta&quot;         name_in_code=&quot;theta_m&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;rt_diabatic_tend&quot;                              type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;euler_tend_u&quot;       name_in_code=&quot;u_euler&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;euler_tend_w&quot;       name_in_code=&quot;w_euler&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;/&gt;
+                &lt;var name=&quot;euler_tend_theta&quot;   name_in_code=&quot;theta_euler&quot; type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+
+                &lt;!-- scalar tendencies --&gt;
+                &lt;var_array name=&quot;scalars&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;tend_qv&quot;    name_in_code=&quot;qv&quot;        array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qc&quot;    name_in_code=&quot;qc&quot;        array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qr&quot;    name_in_code=&quot;qr&quot;        array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qi&quot;    name_in_code=&quot;qi&quot;        array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qs&quot;    name_in_code=&quot;qs&quot;        array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qg&quot;    name_in_code=&quot;qg&quot;        array_group=&quot;moist&quot;       streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qnr&quot;   name_in_code=&quot;qnr&quot;       array_group=&quot;number&quot;      streams=&quot;o&quot;/&gt;
+                        &lt;var name=&quot;tend_qni&quot;   name_in_code=&quot;qni&quot;       array_group=&quot;number&quot;      streams=&quot;o&quot;/&gt;
+                &lt;/var_array&gt;
+        &lt;/var_struct&gt;
+
+
+
+&lt;!-- ================================================================================================== --&gt;
+&lt;!--  DECLARATIONS OF ALL PHYSICS VARIABLES (will need to be moved to a Physics Registry shared by the  --&gt;
+&lt;!--  hydrostatic and non-hydrostatic dynamical cores):                                                 --&gt;
+&lt;!-- ================================================================================================== --&gt;
+
+
+        &lt;nml_record name=&quot;physics&quot;&gt;
+                &lt;!-- NAMELIST VARIABLES ADDED FOR INITIALIZATION OF SURFACE CHARACTERISTICS: --&gt;
+                &lt;nml_option name=&quot;input_landuse_data&quot;                type=&quot;character&quot;     default_value=&quot;USGS&quot;/&gt;
+                &lt;nml_option name=&quot;input_soil_data&quot;                   type=&quot;character&quot;     default_value=&quot;STAS&quot;/&gt;
+                &lt;nml_option name=&quot;input_soil_temperature_lag&quot;        type=&quot;integer&quot;       default_value=&quot;140&quot;/&gt;
+                &lt;nml_option name=&quot;num_soil_layers&quot;                   type=&quot;integer&quot;       default_value=&quot;4&quot;/&gt;
+                &lt;nml_option name=&quot;months&quot;                            type=&quot;integer&quot;       default_value=&quot;12&quot;/&gt;
+
+                &lt;!-- ... DIMENSION NEEDED FOR OZONE AND AEROSOLS CONCENTRATIONS IN THE CAM LONGWAVE AND SHORTWAVE --&gt;
+                &lt;!-- ... RADIATION PARAMETERIZATIONS.                                                             --&gt;
+                &lt;nml_option name=&quot;noznlev&quot;                           type=&quot;integer&quot;       default_value=&quot;59&quot;/&gt;
+                &lt;nml_option name=&quot;naerlev&quot;                           type=&quot;integer&quot;       default_value=&quot;29&quot;/&gt;
+                &lt;nml_option name=&quot;camdim1&quot;                           type=&quot;integer&quot;       default_value=&quot;4&quot;/&gt;
+
+                &lt;!-- NAMELIST VARIABLES ADDED FOR PHYSICS CONFIGURATION: --&gt;
+                &lt;nml_option name=&quot;config_frac_seaice&quot;                type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfc_albedo&quot;                 type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfc_snowalbedo&quot;             type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_sst_update&quot;                 type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_sstdiurn_update&quot;            type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_deepsoiltemp_update&quot;        type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+
+                &lt;nml_option name=&quot;config_n_physics&quot;                  type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_microp&quot;                   type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_conv&quot;                     type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_pbl&quot;                      type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_lsm&quot;                      type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_eddy&quot;                     type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_radt_lw&quot;                  type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+                &lt;nml_option name=&quot;config_n_radt_sw&quot;                  type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+
+                &lt;nml_option name=&quot;config_radtlw_interval&quot;            type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_radtsw_interval&quot;            type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_conv_interval&quot;              type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_pbl_interval&quot;               type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_camrad_abs_update&quot;          type=&quot;character&quot;     default_value=&quot;06:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_greeness_update&quot;            type=&quot;character&quot;     default_value=&quot;24:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_bucket_update&quot;              type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+
+                &lt;nml_option name=&quot;config_microp_scheme&quot;              type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_conv_shallow_scheme&quot;        type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_conv_deep_scheme&quot;           type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_eddy_scheme&quot;                type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_lsm_scheme&quot;                 type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_pbl_scheme&quot;                 type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_radt_cld_scheme&quot;            type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_radt_lw_scheme&quot;             type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_radt_sw_scheme&quot;             type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+                &lt;nml_option name=&quot;config_sfclayer_scheme&quot;            type=&quot;character&quot;     default_value=&quot;off&quot;/&gt;
+
+                &lt;nml_option name=&quot;config_bucket_radt&quot;                type=&quot;real&quot;          default_value=&quot;0.0_RKIND&quot;/&gt;
+                &lt;nml_option name=&quot;config_bucket_rainc&quot;               type=&quot;real&quot;          default_value=&quot;0.0_RKIND&quot;/&gt;
+                &lt;nml_option name=&quot;config_bucket_rainnc&quot;              type=&quot;real&quot;          default_value=&quot;0.0_RKIND&quot;/&gt;
+        &lt;/nml_record&gt;
+
+        &lt;var_struct name=&quot;diag_physics&quot; time_levs=&quot;1&quot;&gt;
+
+                &lt;!-- ================================================================================================= --&gt;
+                &lt;!-- ... ARRAYS AND VARIABLES FOR UPDATING THE DEEP SOIL TEMPERATURE:                                  --&gt;
+                &lt;!-- ================================================================================================= --&gt;
+                &lt;!-- nsteps_accum: number of accumulated time-step in a day.                                           --&gt;
+                &lt;!-- ndays_accum : number of accumulated days in a year.                                               --&gt;
+                &lt;!-- tlag        : daily mean surface temperature of prior days                                    [K] --&gt;
+                &lt;!-- tday_accum  : accumulated daily surface temperature for current day                           [K] --&gt;
+                &lt;!-- tyear_mean  : annual mean surface temperature                                                 [K] --&gt;
+                &lt;!-- tyear_accum : accumulated yearly surface temperature for current year                         [K] --&gt;
+
+                &lt;var name=&quot;nsteps_accum&quot;  type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;ndays_accum&quot;   type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;r&quot;/&gt;
+
+                &lt;var name=&quot;tlag&quot;          type=&quot;real&quot;     dimensions=&quot;nLags nCells Time&quot;           streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;tday_accum&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;tyear_mean&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;r&quot;/&gt;
+                &lt;var name=&quot;tyear_accum&quot;   type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;r&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF CLOUD MICROPHYSICS:                                                        --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- i_rainnc  : counter related to how often rainnc is being reset relative to its bucket value   (-)  --&gt;
+                &lt;!-- rainnc    : accumulated total time-step grid-scale precipitation                             (mm)  --&gt;
+                &lt;!-- rainncv   : time-step total grid-scale precipitation                                         (mm)  --&gt;
+                &lt;!-- snownc    : accumulated grid-scale precipitation of snow                                     (mm)  --&gt;
+                &lt;!-- snowncv   : time-step grid-scale precipitation of snow                                       (mm)  --&gt;
+                &lt;!-- graupelnc : accumulated grid-scale precipitation of graupel                                  (mm)  --&gt;
+                &lt;!-- graupelncv: time-step grid-scale precipitation of graupel                                    (mm)  --&gt;
+                &lt;!-- sr        : time-step ratio of frozen versus total grid-scale precipitation                   (-)  --&gt;
+
+                &lt;var name=&quot;i_rainnc&quot;      type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sr&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rainncv&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;snowncv&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;graupelncv&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+
+                &lt;var name=&quot;rainnc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;snownc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;graupelnc&quot;     type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;var name=&quot;qsat&quot;          type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;relhum&quot;        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF CONVECTION:                                                                --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- i_rainc   : counter related to how often rainc is begin reset relative to its bucket value    (-)  --&gt;
+                &lt;!-- cuprec    : convective precipitation rate                                                  (mm/s)  --&gt;
+                &lt;!-- rainc     : accumulated time-step convective precipitation                                   (mm)  --&gt;
+                &lt;!-- raincv    : time-step convective precipitation                                               (mm)  --&gt;
+
+                &lt;var name=&quot;i_rainc&quot;       type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cuprec&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rainc&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;raincv&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- ... KAIN_FRITSCH:                                                                                 --&gt;
+                &lt;!-- cubot     : lowest level of convection                                                        (-) --&gt;
+                &lt;!-- cutop     : highest level of convection                                                       (-) --&gt;
+                &lt;!-- nca       : relaxation time for KF parameterization of convection                             (s) --&gt;
+                &lt;!-- wavg0     : average vertical velocity (KF scheme only)                                    (m s-1) --&gt;
+
+                &lt;var name=&quot;nca&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cubot&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cutop&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;w0avg&quot;         type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF PLANETARY BOUNDARY LAYER PROCESSES:                                        --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- kpbl      : index of PBL top                                                                  (-)  --&gt;
+                &lt;!-- hpbl      : PBL height                                                                        (m)  --&gt;
+                &lt;!-- exch_h    : exchange coefficient                                                              (-)  --&gt;
+
+                &lt;var name=&quot;kpbl&quot;          type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;hpbl&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;exch_h&quot;        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF SURFACE LAYER PROCESSES:                                                   --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!--  br        :bulk richardson number                                                             [-] --&gt;
+                &lt;!--  cd        :drag coefficient at 10m                                                            [-] --&gt;
+                &lt;!--  cda       :drag coefficient at lowest model level                                             [-] --&gt;
+                &lt;!--  chs       :???                                                                                    --&gt;
+                &lt;!--  chs2      :???                                                                                    --&gt;
+                &lt;!--  cqs2      :???                                                                                    --&gt;
+                &lt;!--  ck        :enthalpy exchange coefficient at 10 m                                              [-] --&gt;
+                &lt;!--  cka       :enthalpy exchange coefficient at lowest model level                                [-] --&gt;
+                &lt;!--  cpm       :???                                                                                    --&gt;
+                &lt;!--  flhc      :exchange coefficient for heat                                                      [-] --&gt;
+                &lt;!--  flqc      :exchange coefficient for moisture                                                  [-] --&gt;
+                &lt;!--  gz1oz0    :log of z1 over z0                                                                  [-] --&gt;
+                &lt;!--  hfx       :upward heat flux at the surface                                               [W/m2/s] --&gt;
+                &lt;!--  lh        :latent heat flux at the surface                                                 [W/m2] --&gt;
+                &lt;!--  mavail    :surface moisture availability                                                      [-] --&gt;
+                &lt;!--  mol       :T* in similarity theory                                                            [K] --&gt;
+                &lt;!--  psih      :similarity theory for heat                                                         [-] --&gt;
+                &lt;!--  psim      :similarity theory for momentum                                                     [-] --&gt;
+                &lt;!--  qfx       :upward moisture flux at the surface                                          [kg/m2/s] --&gt;
+                &lt;!--  qgh       :???                                                                                    --&gt;
+                &lt;!--  qsfc      :specific humidity at lower boundary                                            [kg/kg] --&gt;
+                &lt;!--  regime    :flag indicating PBL regime (stable_p,unstable_p,etc...)                            [-] --&gt;
+                &lt;!--  rmol      :1 / Monin Ob length                                                                [-] --&gt;
+                &lt;!--  ust       :u* in similarity theory                                                          [m/s] --&gt;
+                &lt;!--  ustm      :u* in similarity theory without vconv                                            [m/s] --&gt;
+                &lt;!--  zol       :z/L height over Monin-Obukhov length                                               [-] --&gt;
+                &lt;!--  znt       :time-varying roughness length                                                      [m] --&gt;
+                &lt;!--  wspd      :wind speed                                                                       [m/s] --&gt;
+                &lt;!--  DIAGNOSTICS:                                                                                      --&gt;
+                &lt;!--  q2        :specific humidity at 2m                                                        [kg/kg] --&gt;
+                &lt;!--  u10       :u at 10 m                                                                        [m/s] --&gt;
+                &lt;!--  v10       :v at 10 m                                                                        [m/s] --&gt;
+                &lt;!--  t2m       :temperature at 2m                                                                  [K] --&gt;
+                &lt;!--  th2m      :potential temperature at 2m                                                        [K] --&gt;
+                &lt;var name=&quot;hfx&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;mavail&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;mol&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;qfx&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;qsfc&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;ust&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;ustm&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;zol&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;znt&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;var name=&quot;br&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cd&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cda&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;chs&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;chs2&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cqs2&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;ck&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cka&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cpm&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;flhc&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;flqc&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;gz1oz0&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;lh&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;psim&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;psih&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;qgh&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;regime&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rmol&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;wspd&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- DIAGNOSTICS: --&gt;
+                &lt;var name=&quot;u10&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;v10&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;q2&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;t2m&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;th2m&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF SHORTWAVE RADIATION:                                                       --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!--  coszr     :cosine of the solar zenith angle                                                   [-] --&gt;
+                &lt;!--  gsw       :net shortwave flux at surface                                                  [W m-2] --&gt;
+                &lt;!--  swcf      :shortwave cloud forcing at top-of-atmosphere                                   [W m-2] --&gt;
+                &lt;!--  swdnb     :all-sky downwelling shortwave flux at bottom-of-atmosphere                     [W m-2] --&gt;
+                &lt;!--  swdnbc    :clear-sky downwelling shortwave flux at bottom-of-atmosphere                   [W m-2] --&gt;
+                &lt;!--  swdnt     :all-sky downwelling shortwave flux at top-of-atmosphere                        [W m-2] --&gt;
+                &lt;!--  swdntc    :clear-sky downwelling shortwave flux at top-of-atmosphere                      [W m-2] --&gt;
+                &lt;!--  swupb     :all-sky upwelling shortwave flux at bottom-of-atmosphere                       [W m-2] --&gt;
+                &lt;!--  swupbc    :clear-sky upwelling shortwave flux at bottom-of-atmosphere                     [W m-2] --&gt;
+                &lt;!--  swupt     :all-sky upwelling shortwave flux at top-of-atmosphere                          [W m-2] --&gt;
+                &lt;!--  swuptc    :clear-sky upwelling shortwave flux at top-of-atmosphere                        [W m-2] --&gt;
+                &lt;!--  acswdnb   :accumulated all-sky downwelling shortwave flux at bottom-of-atmosphere         [J m-2] --&gt;
+                &lt;!--  acswdnbc  :accumulated clear-sky downwelling shortwave flux at bottom-of-atmosphere       [J m-2] --&gt;
+                &lt;!--  acswdnt   :accumulated all-sky downwelling shortwave flux at top-of-atmosphere            [J m-2] --&gt;
+                &lt;!--  acswdntc  :accumulated clear-sky downwelling shortwave flux at top-of-atmosphere          [J m-2] --&gt;
+                &lt;!--  acswupb   :accumulated all-sky upwelling shortwave flux at bottom-of-atmosphere           [J m-2] --&gt;
+                &lt;!--  acswupbc  :accumulated clear-sky upwelling shortwave flux at bottom-of-atmosphere         [J m-2] --&gt;
+                &lt;!--  acswupt   :accumulated all-sky upwelling shortwave flux at top-of-atmosphere              [J m-2] --&gt;
+                &lt;!--  acswuptc  :accumulated clear-sky upwelling shortwave flux at top-of-atmosphere            [J m-2] --&gt;
+                &lt;!--  swdnflx   :                                                                                       --&gt;
+                &lt;!--  swdnflxc  :                                                                                       --&gt;
+                &lt;!--  swupflx   :                                                                                       --&gt;
+                &lt;!--  swupflxc  :                                                                                       --&gt;
+
+                &lt;!--  i_acswdnb : counter related to how often swdnb is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_acswdnbc: counter related to how often swdnbc is begin reset relative to its bucket value   (-) --&gt;
+                &lt;!--  i_acswdnt : counter related to how often swdnt is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_acswdntc: counter related to how often swdntc is begin reset relative to its bucket value   (-) --&gt;
+                &lt;!--  i_acswupb : counter related to how often swupb is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_acswupbc: counter related to how often swupbc is begin reset relative to its bucket value   (-) --&gt;
+                &lt;!--  i_acswupt : counter related to how often swupt is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_acswuptc: counter related to how often swuptc is begin reset relative to its bucket value   (-) --&gt;
+
+                &lt;var name=&quot;i_acswdnb&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswdnbc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswdnt&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswdntc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswupb&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswupbc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswupt&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_acswuptc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;var name=&quot;coszr&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swcf&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swdnb&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swdnbc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swdnt&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swdntc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swupb&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swupbc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swupt&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swuptc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;acswdnb&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswdnbc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswdnt&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswdntc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswupb&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswupbc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswupt&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acswuptc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;gsw&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- RRTMG SW ONLY: --&gt;
+                &lt;var name=&quot;swdnflx&quot;       type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swdnflxc&quot;      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swupflx&quot;       type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;swupflxc&quot;      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF LONGWAVE RADIATION:                                                        --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+
+                &lt;!--  note: glw is the same diagnostic as lwdnb and is used in the land-surface scheme for the calcula- --&gt;
+                &lt;!--        tion of the surface budget. glw is always an output argument to the subroutine rrtmg_lwrad. --&gt;
+                &lt;!--        in contrast,lwdnb is an optional ouput argument to the subroutine rrtmg_lwrad depending on  --&gt;
+                &lt;!--        the presence of lwupt (or not).                                                             --&gt;
+
+                &lt;!--  glw       :all-sky downwelling longwave flux at bottom-of-atmosphere                      [W m-2] --&gt;
+                &lt;!--  lwcf      :longwave cloud forcing at top-of-atmosphere                                    [W m-2] --&gt;
+                &lt;!--  lwdnb     :all-sky downwelling longwave flux at bottom-of-atmosphere                      [W m-2] --&gt;
+                &lt;!--  lwdnbc    :clear-sky downwelling longwave flux at bottom-of-atmosphere                    [W m-2] --&gt;
+                &lt;!--  lwdnt     :all-sky downwelling longwave flux at top-of-atmosphere                         [W m-2] --&gt;
+                &lt;!--  lwdntc    :clear-sky downwelling longwave flux at top-of-atmosphere                       [W m-2] --&gt;
+                &lt;!--  lwupb     :all-sky upwelling longwave flux at bottom-of-atmosphere                        [W m-2] --&gt;
+                &lt;!--  lwupbc    :clear-sky upwelling longwave flux at bottom-of-atmosphere                      [W m-2] --&gt;
+                &lt;!--  lwupt     :all-sky upwelling longwave flux at top-of-atmosphere                           [W m-2] --&gt;
+                &lt;!--  lwuptc    :clear-sky upwelling longwave flux at top-of-atmosphere                         [W m-2] --&gt;
+                &lt;!--  aclwdnb   :accumulated all-sky downwelling longwave flux at bottom-of-atmosphere          [J m-2] --&gt;
+                &lt;!--  aclwdnbc  :accumulated clear-sky downwelling longwave flux at bottom-of-atmosphere        [J m-2] --&gt;
+                &lt;!--  aclwdnt   :accumulated all-sky downwelling longwave flux at top-of-atmosphere             [J m-2] --&gt;
+                &lt;!--  aclwdntc  :accumulated clear-sky downwelling longwave flux at top-of-atmosphere           [J m-2] --&gt;
+                &lt;!--  aclwupb   :accumulated all-sky upwelling longwave flux at bottom-of-atmosphere            [J m-2] --&gt;
+                &lt;!--  aclwupbc  :accumulated clear-sky upwelling longwave flux at bottom-of-atmosphere          [J m-2] --&gt;
+                &lt;!--  aclwupt   :accumulated all-sky upwelling longwave flux at top-of-atmosphere               [J m-2] --&gt;
+                &lt;!--  aclwuptc  :accumulated clear-sky upwelling longwave flux at top-of-atmosphere             [J m-2] --&gt;
+                &lt;!--  lwdnflx   :                                                                                       --&gt;
+                &lt;!--  lwdnflxc  :                                                                                       --&gt;
+                &lt;!--  lwupflx   :                                                                                       --&gt;
+                &lt;!--  lwupflxc  :                                                                                       --&gt;
+                &lt;!--  olrtoa    :outgoing longwave radiation at top-of-the-atmosphere                           [W m-2] --&gt;
+
+                &lt;!--  i_aclwdnb : counter related to how often lwdnb is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_aclwdnbc: counter related to how often lwdnbc is begin reset relative to its bucket value   (-) --&gt;
+                &lt;!--  i_aclwdnt : counter related to how often lwdnt is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_aclwdntc: counter related to how often lwdntc is begin reset relative to its bucket value   (-) --&gt;
+                &lt;!--  i_aclwupb : counter related to how often lwupb is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_aclwupbc: counter related to how often lwupbc is begin reset relative to its bucket value   (-) --&gt;
+                &lt;!--  i_aclwupt : counter related to how often lwupt is begin reset relative to its bucket value    (-) --&gt;
+                &lt;!--  i_aclwuptc: counter related to how often lwuptc is begin reset relative to its bucket value   (-) --&gt;
+
+                &lt;var name=&quot;i_aclwdnb&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwdnbc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwdnt&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwdntc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwupb&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwupbc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwupt&quot;     type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;i_aclwuptc&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;var name=&quot;lwcf&quot;          type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwdnb&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwdnbc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwdnt&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwdntc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwupb&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwupbc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwupt&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;lwuptc&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;aclwdnb&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwdnbc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwdnt&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwdntc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwupb&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwupbc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwupt&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;aclwuptc&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;olrtoa&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;glw&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- ... RRTMG LW ONLY: --&gt;
+                &lt;!-- var name=&quot;lwdnflx&quot;       type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot; --&gt;
+                &lt;!-- var name=&quot;lwdnflxc&quot;      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot; --&gt;
+                &lt;!-- var name=&quot;lwupflx&quot;       type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot; --&gt;
+                &lt;!-- var name=&quot;lwupflxc&quot;      type=&quot;real&quot;     dimensions=&quot;nVertLevelsP2 nCells Time&quot;   streams=&quot;o&quot; --&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... ADDITIONAL &quot;RADIATION&quot; ARRAYS NEEDED ONLY IN THE &quot;CAM&quot; LW AND SW RADIATION CODES:              --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+
+                &lt;!-- INFRARED ABSORPTION: --&gt;
+                &lt;var name=&quot;absnxt&quot;        type=&quot;real&quot;     dimensions=&quot;nVertLevels cam_dim1 nCells Time&quot;/&gt;
+                &lt;var name=&quot;abstot&quot;        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nVertLevelsP1 nCells Time&quot;/&gt;
+                &lt;var name=&quot;emstot&quot;        type=&quot;real&quot;     dimensions=&quot;nVertLevelsP1 nCells Time&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMERIZATION OF CLOUDINESS:                                                                  --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;var name=&quot;cldfrac&quot;       type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... PARAMETERIZATION OF LAND-SURFACE SCHEME:                                                       --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+
+                &lt;!-- acsnom         :accumulated melted snow                                                   [kg m-2] --&gt;
+                &lt;!-- acsnow         :accumulated snow                                                          [kg m-2] --&gt;
+                &lt;!-- canwat         :canopy water                                                              [kg m-2] --&gt;
+                &lt;!-- chklowq        :surface saturation flag                                                        [-] --&gt;
+                &lt;!-- grdflx         :ground heat flux                                                           [W m-2] --&gt;
+                &lt;!-- lai            :leaf area index                                                                [-] --&gt;
+                &lt;!-- noahres        :residual of the noah land-surface scheme energy budget                     [W m-2] --&gt;
+                &lt;!-- potevp         :potential evaporation                                                      [W m-2] --&gt;
+                &lt;!-- qz0            :specific humidity at znt                                                 [kg kg-1] --&gt;
+                &lt;!-- rib            :??                                                                                 --&gt;
+                &lt;!-- sfc_albedo     :surface albedo                                                                 [-] --&gt;
+                &lt;!-- sfc_embck      :background emissivity                                                          [-] --&gt;
+                &lt;!-- sfc_emiss      :surface emissivity                                                             [-] --&gt;
+                &lt;!-- sfcrunoff      :surface runoff                                                             [m s-1] --&gt;
+                &lt;!-- smstav         :moisture availability                                                          [-] --&gt;
+                &lt;!-- smstot         :total moisture                                                            [m3 m-3] --&gt;
+                &lt;!-- snopcx         :snow phase change heat flux                                                [W m-2] --&gt;
+                &lt;!-- snotime        :??                                                                                 --&gt;
+                &lt;!-- sstsk          : skin sea-surface temperature                                                  [K] --&gt;
+                &lt;!-- sstsk_diur     : skin sea-surface temperature difference                                       [K] --&gt;
+                &lt;!-- thc            :thermal inertia                                               [Cal cm-1 K-1 s-0.5] --&gt;
+                &lt;!-- udrunoff       :sub-surface runoff                                                         [m s-1] --&gt;
+                &lt;!-- xicem          :ice mask from previous time-step                                               [-] --&gt;
+                &lt;!-- z0             :background roughness length                                                    [m] --&gt;
+                &lt;!-- zs             :depth of centers of soil layers                                                [m] --&gt;
+
+                &lt;var name=&quot;acsnom&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;acsnow&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;canwat&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;chklowq&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;grdflx&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;lai&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;noahres&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;potevp&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;qz0&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rib&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sfc_albedo&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sfc_emiss&quot;     type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sfc_emibck&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sfcrunoff&quot;     type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;smstav&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;smstot&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;snopcx&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;snotime&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sstsk&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sstsk_diur&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;thc&quot;           type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;udrunoff&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;xicem&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;z0&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;zs&quot;            type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;ro&quot;/&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;tend_physics&quot; time_levs=&quot;1&quot;&gt;

+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- TENDENCIES FROM PARAMETERIZATION OF CONVECTION:                                                    --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- rthcuten  : tendency of potential temperature due to cumulus convection                   (K s-1)  --&gt;
+                &lt;!-- rqvcuten  : tendency of water vapor mixing ratio due to cumulus convection            (kg/kg s-1)  --&gt;
+                &lt;!-- rqccuten  : tendency of cloud water mixing ratio due to cumulus convection            (kg/kg s-1)  --&gt;
+                &lt;!-- rqicuten  : tendency of cloud ice mixing ratio due to cumulus convection              (kg/kg s-1)  --&gt;
+
+                &lt;var name=&quot;rthcuten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqvcuten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqccuten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqicuten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- KAIN_FRITSCH --&gt;
+                &lt;!-- rqrcuten  : tendency of rain mixing ratio due to cumulus convection                   (kg/kg s-1) --&gt;
+                &lt;!-- rqscuten  : tendency of snow mixing ratio due to cumulus convection                   (kg/kg s-1) --&gt;
+
+                &lt;var name=&quot;rqrcuten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqscuten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+                &lt;!-- TIEDTKE --&gt;
+                &lt;!-- rucuten   : tendency of zonal wind due to cumulus convection                              (m/s-1) --&gt;
+                &lt;!-- rvcuten   : tendency of meridional wind due to cumulus convection                         (m/s-1) --&gt;
+                &lt;!-- rqvdynten : tendency of water vapor due to horizontal and vertical advections         (kg/kg/s-1) --&gt;
+                &lt;var name=&quot;rqvdynten&quot;   type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rucuten&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rvcuten&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... TENDENCIES FROM PARAMETERIZATION OF PLANETARY BOUNDARY LAYER PROCESSES:                        --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- rublten   : tendency of zonal wind due to pbl processes                                   (m s-1)  --&gt;
+                &lt;!-- rvblten   : tendency of meridional wind due to pbl processes                              (m s-1)  --&gt;
+                &lt;!-- rthblten  : tendency of potential temperature due to pbl processes                        (K s-1)  --&gt;
+                &lt;!-- rqvblten  : tendency of water vapor mixing ratio due to pbl processes                 (kg/kg s-1)  --&gt;
+                &lt;!-- rqcblten  : tendency of cloud water mixing ratio due to pbl processes                 (kg/kg s-1)  --&gt;
+                &lt;!-- rqiblten  : tendency of cloud ice mixing ratio due to pbl processes                   (kg/kg s-1)  --&gt;
+
+                &lt;var name=&quot;rublten&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rvblten&quot;     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rthblten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqvblten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqcblten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rqiblten&quot;    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... TENDENCIES FROM PARAMETERIZATION OF LONGWAVE RADIATION:                                        --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!--  rthratensw:uncoupled theta tendency due to shortwave radiation                            [K s-1] --&gt;
+                &lt;!--  rthratenlw:uncoupled theta tendency due to longwave radiation                             [K s-1] --&gt;
+
+                &lt;var name=&quot;rthratensw&quot;  type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;rthratenlw&quot;  type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+        &lt;/var_struct&gt;
+
+        &lt;var_struct name=&quot;sfc_input&quot; time_levs=&quot;0&quot;&gt;
+
+                &lt;!-- ================================================================================================== --&gt;
+                &lt;!-- ... SURFACE CHARACTERISTICS THAT NEED TO BE READ FROM GRID.NC:                                     --&gt;
+                &lt;!-- ================================================================================================== --&gt;
+
+                &lt;!--  albedo12m      :monthly climatological albedo                                                 [-] --&gt;
+                &lt;!--  greenfrac      :monthly climatological greeness fraction                                      [-] --&gt;
+                &lt;!--  isltyp         :dominant soil category                                                        [-] --&gt;
+                &lt;!--  ivgtyp         :dominant vegetation category                                                  [-] --&gt;
+                &lt;!--  landmask       :=0 for ocean;=1 for land                                                      [-] --&gt;
+                &lt;!--  sfc_albbck     :background albedo                                                             [-] --&gt;
+                &lt;!--  shdmin         :minimum areal fractional coverage of annual green vegetation                  [-] --&gt;
+                &lt;!--  shdmax         :maximum areal fractional coverage of annual green vegetation                  [-] --&gt;
+                &lt;!--  skintemp       :skin temperature                                                              [K] --&gt;
+                &lt;!--  snoalb         :annual max snow albedo                                                        [-] --&gt;
+                &lt;!--  snow           :snow water equivalent                                                    [kg m-2] --&gt;
+                &lt;!--  sst            :sea-surface temperature                                                       [K] --&gt;
+                &lt;!--  snowc          :flag indicating snow coverage (1 for snow cover)                              [-] --&gt;
+                &lt;!--  snowh          :physical snow depth                                                           [m] --&gt;
+                &lt;!--  ter            :terrain height                                                                [-] --&gt;
+                &lt;!--  tmn            :soil temperature at lower boundary                                            [K] --&gt;
+                &lt;!--  vegfra         :vegetation fraction                                                           [-] --&gt;
+                &lt;!--  seaice         :sea-ice mask (=1 when xice is greater than 0; =0 otherwise)                   [-] --&gt;
+                &lt;!--  xice           :fractional sea-ice coverage                                                   [-] --&gt;
+                &lt;!--  xland          :land mask    (1 for land; 2 for water)                                        [-] --&gt;
+
+                &lt;!--  dzs            :thickness of soil layers                                                      [m] --&gt;
+                &lt;!--  smcrel         :soil moisture threshold below which transpiration begins to stress            [-] --&gt;
+                &lt;!--  sh2o           :soil liquid water                                                        [m3 m-3] --&gt;
+                &lt;!--  smois          :soil moisture                                                            [m3 m-3] --&gt;
+                &lt;!--  tslb           :soil temperature                                                              [K] --&gt;
+
+                &lt;var name=&quot;isltyp&quot;      type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;ivgtyp&quot;      type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;landmask&quot;    type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;shdmin&quot;      type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;shdmax&quot;      type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;snoalb&quot;      type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;ter&quot;         type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;io&quot;/&gt;
+                &lt;var name=&quot;albedo12m&quot;   type=&quot;real&quot;     dimensions=&quot;nMonths nCells&quot;              streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;greenfrac&quot;   type=&quot;real&quot;     dimensions=&quot;nMonths nCells&quot;              streams=&quot;iro&quot;/&gt;
+
+                &lt;var name=&quot;sfc_albbck&quot;  type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;skintemp&quot;    type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;snow&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;snowc&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;snowh&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;sst&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;isro&quot;/&gt;
+                &lt;var name=&quot;tmn&quot;         type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;vegfra&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;seaice&quot;      type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xice&quot;        type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;isro&quot;/&gt;
+                &lt;var name=&quot;xland&quot;       type=&quot;real&quot;     dimensions=&quot;nCells Time&quot;                 streams=&quot;iro&quot;/&gt;
+
+                &lt;var name=&quot;dzs&quot;         type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;smcrel&quot;      type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;sh2o&quot;        type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;smois&quot;       type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;tslb&quot;        type=&quot;real&quot;     dimensions=&quot;nSoilLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+        &lt;/var_struct&gt;
+&lt;/registry&gt;

Index: trunk/mpas/src/core_ocean
===================================================================
--- trunk/mpas/src/core_ocean        2013-03-22 17:48:50 UTC (rev 2662)
+++ trunk/mpas/src/core_ocean        2013-03-22 19:32:26 UTC (rev 2663)

Property changes on: trunk/mpas/src/core_ocean
___________________________________________________________________
Modified: svn:mergeinfo
## -35,3 +35,4 ##
 /branches/scratch_indication/src/core_ocean:2555-2656
 /branches/source_renaming/src/core_ocean:1082-1113
 /branches/time_manager/src/core_ocean:924-962
+/branches/xml_registry/src/core_ocean:2610-2662
\ No newline at end of property
Copied: trunk/mpas/src/core_ocean/Registry.xml (from rev 2662, branches/xml_registry/src/core_ocean/Registry.xml)
===================================================================
--- trunk/mpas/src/core_ocean/Registry.xml                                (rev 0)
+++ trunk/mpas/src/core_ocean/Registry.xml        2013-03-22 19:32:26 UTC (rev 2663)
@@ -0,0 +1,1071 @@
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;registry&gt;
+        &lt;dims&gt;
+                &lt;dim name=&quot;nCells&quot; units=&quot;unitless&quot;
+                     description=&quot;The number of polygons in the primary grid.&quot;
+                /&gt;
+                &lt;dim name=&quot;nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;The number of edge midpoints in either the primary or dual grid.&quot;
+                /&gt;
+                &lt;dim name=&quot;maxEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;The largest number of edges any polygon within the grid has.&quot;
+                /&gt;
+                &lt;dim name=&quot;maxEdges2&quot; units=&quot;unitless&quot;
+                     description=&quot;Two times the largest number of edges any polygon within the grid has.&quot;
+                /&gt;
+                &lt;dim name=&quot;nAdvectionCells&quot; definition=&quot;maxEdges2+0&quot; units=&quot;unitless&quot;
+                     description=&quot;The largest number of advection cells for any edge.&quot;
+                /&gt;
+                &lt;dim name=&quot;nVertices&quot; units=&quot;unitless&quot;
+                     description=&quot;The total number of cells in the dual grid. Also the number of corners in the primary grid.&quot;
+                /&gt;
+                &lt;dim name=&quot;TWO&quot; definition=&quot;2&quot; units=&quot;unitless&quot;
+                     description=&quot;The number two as a dimension.&quot;
+                /&gt;
+                &lt;dim name=&quot;R3&quot; definition=&quot;3&quot; units=&quot;unitless&quot;
+                     description=&quot;The number three as a dimension.&quot;
+                /&gt;
+                &lt;dim name=&quot;FIFTEEN&quot; definition=&quot;15&quot; units=&quot;unitless&quot;
+                     description=&quot;The number 15 as a dimension.&quot;
+                /&gt;
+                &lt;dim name=&quot;TWENTYONE&quot; definition=&quot;21&quot; units=&quot;unitless&quot;
+                     description=&quot;The number 21 as a dimension.&quot;
+                /&gt;
+                &lt;dim name=&quot;vertexDegree&quot; units=&quot;unitless&quot;
+                     description=&quot;The number of cells or edges touching each vertex.&quot;
+                /&gt;
+                &lt;dim name=&quot;nVertLevels&quot; units=&quot;unitless&quot;
+                     description=&quot;The number of levels in the vertical direction. All vertical levels share the same horizontal locations.&quot;
+                /&gt;
+                &lt;dim name=&quot;nVertLevelsP1&quot; definition=&quot;nVertLevels+1&quot; units=&quot;unitless&quot;
+                     description=&quot;The number of interfaces in the vertical direction.&quot;
+                /&gt;
+                &lt;dim name=&quot;nMonths&quot; units=&quot;unitless&quot;
+                         description=&quot;The number of forcing slices in the monthly forcing fields. {\bf \color{red} Deprecated. Should be removed.}&quot;
+                /&gt;
+        &lt;/dims&gt;
+        &lt;nml_record name=&quot;time_management&quot;&gt;
+                &lt;nml_option name=&quot;config_do_restart&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines if the initial conditions should be read from a restart file, or an input file.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_start_time&quot; type=&quot;character&quot; default_value=&quot;'0000-01-01_00:00:00'&quot; units=&quot;unitless&quot;
+                            description=&quot;Timestamp describing the initial time of the simulation. If it is set to 'file', the initial time is read from restart_timestamp.&quot;
+                            possible_values=&quot;'YYYY-MM-DD_HH:MM:SS' or 'file'&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_stop_time&quot; type=&quot;character&quot; default_value=&quot;'none'&quot; units=&quot;unitless&quot;
+                            description=&quot;Timestamp descriping the final time of the simulation. If it is set to 'none' the final time is determined from config_start_time and config_run_duration.&quot;
+                            possible_values=&quot;'YYYY-MM-DD_HH:MM:SS' or 'none'&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_run_duration&quot; type=&quot;character&quot; default_value=&quot;'0_06:00:00'&quot; units=&quot;unitless&quot;
+                            description=&quot;Timestamp describing the length of the simulation. If it is set to 'none' the duraction is determined from config_start_time and config_stop_time. config_run_duration overrides inconsistent values of config_stop_time.&quot;
+                            possible_values=&quot;'DDDD_HH:MM:SS' or 'none'&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_calendar_type&quot; type=&quot;character&quot; default_value=&quot;'360day'&quot; units=&quot;unitless&quot;
+                            description=&quot;Selection of the type of calendar that should be used in the simulation.&quot;
+                            possible_values=&quot;'gregorian', 'gregorian_noleap', or '360day'&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;io&quot;&gt;
+                &lt;nml_option name=&quot;config_input_name&quot; type=&quot;character&quot; default_value=&quot;'grid.nc'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_output_name&quot; type=&quot;character&quot; default_value=&quot;'output.nc'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_restart_name&quot; type=&quot;character&quot; default_value=&quot;'restart.nc'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_restart_interval&quot; type=&quot;character&quot; default_value=&quot;'0_06:00:00'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_output_interval&quot; type=&quot;character&quot; default_value=&quot;'0_06:00:00'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_stats_interval&quot; type=&quot;character&quot; default_value=&quot;'0_01:00:00'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_write_stats_on_startup&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_write_output_on_startup&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_frames_per_outfile&quot; type=&quot;integer&quot; default_value=&quot;1000&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_pio_num_iotasks&quot; type=&quot;integer&quot; default_value=&quot;0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_pio_stride&quot; type=&quot;integer&quot; default_value=&quot;1&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;time_integration&quot;&gt;
+                &lt;nml_option name=&quot;config_dt&quot; type=&quot;real&quot; default_value=&quot;3000.0&quot; units=&quot;s&quot;
+                            description=&quot;Length of model time-step.&quot;
+                            possible_values=&quot;Any positive real value, but limited by CFL condition.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_time_integrator&quot; type=&quot;character&quot; default_value=&quot;'split_explicit'&quot; units=&quot;unitless&quot;
+                            description=&quot;Time integration method.&quot;
+                            possible_values=&quot;'split_explicit', 'RK4', 'unsplit_explicit'&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;grid&quot;&gt;
+                &lt;nml_option name=&quot;config_num_halos&quot; type=&quot;integer&quot; default_value=&quot;3&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines the number of halo cells extending from a blocks owned cells (Called the 0-Halo). The default of 3 is the minimum that can be used with monotonic advection.&quot;
+                            possible_values=&quot;Any positive interger value.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_vert_coord_movement&quot; type=&quot;character&quot; default_value=&quot;'uniform_stretching'&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines the vertical coordinate movement type. 'uniform_stretching' distrubtes SSH perturbations through all vertical levels, 'fixed' places them all in the top level, 'user_specified' allows the input file to determine the distribution, and 'isopycnal' causes levels to be pure isopycnal.&quot;
+                            possible_values=&quot;'uniform_stretching', 'fixed', 'user_specified', 'isopycnal'&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_alter_ICs_for_pbcs&quot; type=&quot;character&quot; default_value=&quot;'zlevel_pbcs_off'&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines the method of alteration for partial bottom cells. 'zlevel_pbcs_on' alters the initial conditions for partial bottom cells, 'zlevel_pbcs_off' alters the initial conditions to have full cells everwhere, and 'off' does nothing to the initial conditions.&quot;
+                            possible_values=&quot;'zlevel_pbcs_on', 'zlevel_pbcs_off', 'off'&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_min_pbc_fraction&quot; type=&quot;real&quot; default_value=&quot;0.10&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines the minimum fraction of a cell altering the initial conditions can create.&quot;
+                            possible_values=&quot;Any real between 0 and 1.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_check_ssh_consistency&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;&quot;
+                            description=&quot;Enables a check to determine if the SSH is consistent across relevant variables.&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;decomposition&quot;&gt;
+                &lt;nml_option name=&quot;config_block_decomp_file_prefix&quot; type=&quot;character&quot; default_value=&quot;'graph.info.part.'&quot; units=&quot;unitless&quot;
+                            description=&quot;Defines the prefix for the block decomposition file. Can include a path. The number of blocks is appended to the end of the prefix at run-time.&quot;
+                                        possible_values=&quot;Any path/prefix to a block decomposition file.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_number_of_blocks&quot; type=&quot;integer&quot; default_value=&quot;0&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines the number of blocks a simulation should be run with. If it is set to 0, the number of blocks is the same as the number of MPI tasks at run-time.&quot;
+                                        possible_values=&quot;Any integer $&gt;=$ 0.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_explicit_proc_decomp&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Determines if an explicit processor decomposition should be used. This is only useful if multiple blocks per processor are used.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_proc_decomp_file_prefix&quot; type=&quot;character&quot; default_value=&quot;'graph.info.part.'&quot; units=&quot;unitless&quot;
+                            description=&quot;Defines the prefix for the processor decomposition file. This file is only read if config_explicit_proc_decomp is .true. The number of processors is appended to the end of the prefix at run-time.&quot;
+                                        possible_values=&quot;Any path/prefix to a processor decomposition file.&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;hmix&quot;&gt;
+                &lt;nml_option name=&quot;config_hmix_ScaleWithMesh&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If false, del2 and del4 coefficients are constant throughout the mesh (equivalent to setting $\rho_m=1$ throughout the mesh).  If true, these coefficients scale as mesh density to the -3/4 power.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_visc_vorticity_term&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;unitless&quot;
+                            description=&quot;{\color{red} TO BE DELETED}&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_apvm_scale_factor&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;unitless&quot;
+                            description=&quot;Anticipated potential vorticity (APV) method scale factor, $c_{apv}$.  When zero, APV is off.&quot;
+                            possible_values=&quot;Any non-negative number, typically between zero and one.&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;hmix_del2&quot;&gt;
+                &lt;nml_option name=&quot;config_use_mom_del2&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, Laplacian horizontal mixing is used on the momentum equation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_use_tracer_del2&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, Laplacian horizontal mixing is used on the tracer equation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_mom_del2&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;m^2 s^{-1}&quot;
+                            description=&quot;Horizonal viscosity, $</font>
<font color="gray">u_h$.&quot;
+                            possible_values=&quot;any positive real&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_tracer_del2&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;m^2 s^{-1}&quot;
+                            description=&quot;Horizonal diffusion, $\kappa_h$.&quot;
+                            possible_values=&quot;any positive real&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_vorticity_del2_scale&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;unitless&quot;
+                            description=&quot;{\color{red} TO BE DELETED}&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;hmix_del4&quot;&gt;
+                &lt;nml_option name=&quot;config_use_mom_del4&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, biharmonic horizontal mixing is used on the momentum equation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_use_tracer_del4&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, biharmonic horizontal mixing is used on the tracer equation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_mom_del4&quot; type=&quot;real&quot; default_value=&quot;5.0e13&quot; units=&quot;m^4 s^{-1}&quot;
+                            description=&quot;Coefficient for horizontal biharmonic operator on momentum.&quot;
+                            possible_values=&quot;any positive real&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_tracer_del4&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;m^4 s^{-1}&quot;
+                            description=&quot;Coefficient for horizontal biharmonic operator on tracers.&quot;
+                            possible_values=&quot;any positive real&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_vorticity_del4_scale&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;&quot;
+                            description=&quot;{\color{red} TO BE DELETED}&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;hmix_Leith&quot;&gt;
+                &lt;nml_option name=&quot;config_use_Leith_del2&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_Leith_parameter&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_Leith_dx&quot; type=&quot;real&quot; default_value=&quot;15000.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_Leith_visc2_max&quot; type=&quot;real&quot; default_value=&quot;2.5e3&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;standard_GM&quot;&gt;
+                &lt;nml_option name=&quot;config_h_kappa&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_h_kappa_q&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;Rayleigh_damping&quot;&gt;
+                &lt;nml_option name=&quot;config_Rayleigh_friction&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, Rayleigh friction is included in the momentum equation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_Rayleigh_damping_coeff&quot; type=&quot;real&quot; default_value=&quot;0.0&quot; units=&quot;s^{-1}&quot;
+                            description=&quot;Inverse-time coefficient for the Rayleigh damping term, $c_R$.&quot;
+                            possible_values=&quot;Any positive real value.&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;vmix&quot;&gt;
+                &lt;nml_option name=&quot;config_convective_visc&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_convective_diff&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;vmix_const&quot;&gt;
+                &lt;nml_option name=&quot;config_use_const_visc&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_use_const_diff&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_vert_visc&quot; type=&quot;real&quot; default_value=&quot;2.5e-4&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_vert_diff&quot; type=&quot;real&quot; default_value=&quot;2.5e-5&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;vmix_rich&quot;&gt;
+                &lt;nml_option name=&quot;config_use_rich_visc&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_use_rich_diff&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_bkrd_vert_visc&quot; type=&quot;real&quot; default_value=&quot;1.0e-4&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_bkrd_vert_diff&quot; type=&quot;real&quot; default_value=&quot;1.0e-5&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_rich_mix&quot; type=&quot;real&quot; default_value=&quot;0.005&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;vmix_tanh&quot;&gt;
+                &lt;nml_option name=&quot;config_use_tanh_visc&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_use_tanh_diff&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_max_visc_tanh&quot; type=&quot;real&quot; default_value=&quot;2.5e-1&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_min_visc_tanh&quot; type=&quot;real&quot; default_value=&quot;1.0e-4&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_max_diff_tanh&quot; type=&quot;real&quot; default_value=&quot;2.5e-2&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_min_diff_tanh&quot; type=&quot;real&quot; default_value=&quot;1.0e-5&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_zMid_tanh&quot; type=&quot;real&quot; default_value=&quot;-100&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_zWidth_tanh&quot; type=&quot;real&quot; default_value=&quot;100&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;forcing&quot;&gt;
+                &lt;nml_option name=&quot;config_use_monthly_forcing&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Controls time frequency of forcing.  If false, a constant forcing is used, provided by the input fields u_src, temperatureRestore, and salinityRestore.  If true, forcing is interpolated between monthly fields given by windStressMonthly, temperatureRestoreMonthly, and salinityRestoreMonthly.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_restoreTS&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, the restoring term is activated in the tracer equation for temperature and salinity.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_restoreT_timescale&quot; type=&quot;real&quot; default_value=&quot;90.0&quot; units=&quot;days&quot;
+                            description=&quot;Restoring timescale for temperature, $\tau_r.$&quot;
+                            possible_values=&quot;any positive real value, but typically between 30 and 90 days.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_restoreS_timescale&quot; type=&quot;real&quot; default_value=&quot;90.0&quot; units=&quot;days&quot;
+                            description=&quot;Restoring timescale for salinity, $\tau_r$.&quot;
+                            possible_values=&quot;any positive real value, but typically between 30 and 90 days.&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;advection&quot;&gt;
+                &lt;nml_option name=&quot;config_vert_tracer_adv&quot; type=&quot;character&quot; default_value=&quot;'stencil'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_vert_tracer_adv_order&quot; type=&quot;integer&quot; default_value=&quot;3&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_horiz_tracer_adv_order&quot; type=&quot;integer&quot; default_value=&quot;3&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_coef_3rd_order&quot; type=&quot;real&quot; default_value=&quot;0.25&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_monotonic&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;bottom_drag&quot;&gt;
+                &lt;nml_option name=&quot;config_bottom_drag_coeff&quot; type=&quot;real&quot; default_value=&quot;1.0e-3&quot; units=&quot;unitless&quot;
+                            description=&quot;Dimensionless bottom drag coefficient, $c_{drag}$.&quot;
+                            possible_values=&quot;any positive real, typically 1.0e-3&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;pressure_gradient&quot;&gt;
+                &lt;nml_option name=&quot;config_pressure_gradient_type&quot; type=&quot;character&quot; default_value=&quot;'pressure_and_zmid'&quot; units=&quot;unitless&quot;
+                            description=&quot;Form of pressure gradient terms in momentum equation. For most applications, the gradient of pressure and layer mid-depth are appropriate.  For isopycnal coordinates, one may use the gradient of the Montgomery potential.&quot;
+                            possible_values=&quot;'pressure_and_zmid' or 'MontgomeryPotential'&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_rho0&quot; type=&quot;real&quot; default_value=&quot;1014.65&quot; units=&quot;kg m^{-3}&quot;
+                            description=&quot;Density used as a coefficient of the pressure gradient terms, $\rho_0$.  This is a constant due to the Boussinesq approximation.&quot;
+                            possible_values=&quot;any positive real, but typically 1000-1035&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;eos&quot;&gt;
+                &lt;nml_option name=&quot;config_eos_type&quot; type=&quot;character&quot; default_value=&quot;'jm'&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;eos_linear&quot;&gt;
+                &lt;nml_option name=&quot;config_eos_linear_alpha&quot; type=&quot;real&quot; default_value=&quot;2.55e-1&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_eos_linear_beta&quot; type=&quot;real&quot; default_value=&quot;7.64e-1&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_eos_linear_Tref&quot; type=&quot;real&quot; default_value=&quot;19.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_eos_linear_Sref&quot; type=&quot;real&quot; default_value=&quot;35.0&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_eos_linear_rhoref&quot; type=&quot;real&quot; default_value=&quot;1025.022&quot; units=&quot;&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;split_explicit_ts&quot;&gt;
+                &lt;nml_option name=&quot;config_n_ts_iter&quot; type=&quot;integer&quot; default_value=&quot;2&quot; units=&quot;unitless&quot;
+                            description=&quot;number of large iterations over stages 1-3&quot;
+                            possible_values=&quot;any positive integer, but typically 1, 2, or 3&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_n_bcl_iter_beg&quot; type=&quot;integer&quot; default_value=&quot;1&quot; units=&quot;unitless&quot;
+                            description=&quot;number of iterations of stage 1 (baroclinic solve) on the first split-explicit iteration&quot;
+                            possible_values=&quot;any positive integer, but typically 1, 2, or 3&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_n_bcl_iter_mid&quot; type=&quot;integer&quot; default_value=&quot;2&quot; units=&quot;unitless&quot;
+                            description=&quot;number of iterations of stage 1 (baroclinic solve) on any split-explicit iterations between first and last&quot;
+                            possible_values=&quot;any positive integer, but typically 1, 2, or 3&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_n_bcl_iter_end&quot; type=&quot;integer&quot; default_value=&quot;2&quot; units=&quot;unitless&quot;
+                            description=&quot;number of iterations of stage 1 (baroclinic solve) on the last split-explicit iteration&quot;
+                            possible_values=&quot;any positive integer, but typically 1, 2, or 3&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_n_btr_subcycles&quot; type=&quot;integer&quot; default_value=&quot;20&quot; units=&quot;unitless&quot;
+                            description=&quot;number of barotropic subcycles in stage 2&quot;
+                            possible_values=&quot;any positive integer, typically between 10 and 100&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_n_btr_cor_iter&quot; type=&quot;integer&quot; default_value=&quot;2&quot; units=&quot;unitless&quot;
+                            description=&quot;number of iterations of the velocity corrector step in stage 2&quot;
+                            possible_values=&quot;any positive integer, but typically 1, 2, or 3&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_u_correction&quot; type=&quot;logical&quot; default_value=&quot;.true.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, the velocity correction term is included in the horizontal advection of thickness and tracers&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_btr_subcycle_loop_factor&quot; type=&quot;integer&quot; default_value=&quot;2&quot; units=&quot;unitless&quot;
+                            description=&quot;Barotropic subcycles proceed from $t$ to $t+n\Delta t$, where $n$ is this configuration option.&quot;
+                            possible_values=&quot;Any positive integer, but typically 1 or 2&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_btr_gam1_uWt1&quot; type=&quot;real&quot; default_value=&quot;0.5&quot; units=&quot;unitless&quot;
+                            description=&quot;Weighting of velocity in the SSH predictor step in stage 2.  When zero, previous subcycle time is used; when one, new subcycle time is used.&quot;
+                            possible_values=&quot;between 0 and 1&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_btr_gam2_SSHWt1&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;unitless&quot;
+                            description=&quot;Weighting of SSH in the velocity corrector step in stage 2.  When zero, previous subcycle time is used; when one, new subcycle time is used.&quot;
+                            possible_values=&quot;between 0 and 1&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_btr_gam3_uWt2&quot; type=&quot;real&quot; default_value=&quot;1.0&quot; units=&quot;unitless&quot;
+                            description=&quot;Weighting of velocity in the SSH corrector step in stage 2.  When zero, previous subcycle time is used; when one, new subcycle time is used.&quot;
+                            possible_values=&quot;between 0 and 1&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_btr_solve_SSH2&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;If true, execute the SSH corrector step in stage 2&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;debug&quot;&gt;
+                &lt;nml_option name=&quot;config_check_zlevel_consistency&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Enables a run-time check for consistency for a zlevel grid. Ensures relevant variables correctly define the bottom of the ocean.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_filter_btr_mode&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Enables filtering of the barotropic mode.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_prescribe_velocity&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Enables a prescribed velocity field. This velocity field is read on input, and remains constant through a simulation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_prescribe_thickness&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Enables a prescribed thickness field. This thickness field is read on input, and remains constant through a simulation.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_include_KE_vertex&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_check_tracer_monotonicity&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Enables a change on tracer monotonicity at the end of the monotonic advection routine. Only used if config_monotonic is set to .true.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_h_all_tend&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables all tendencies on the thickness field.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_h_hadv&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disable tendencies on the thickness field from horizontal advection.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_h_vadv&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on the thickness field from vertical advection.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_all_tend&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables all tendencies on the velocity field.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_coriolis&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Diables tendencies on the velocity field from the Coriolis force.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_pgrad&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on the velocity field from the horizontal pressure gradient.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_hmix&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on the velocity field from horizontal mixing.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_windstress&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on the velocity field from horizontal wind stress.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_vmix&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on the velocity field from vertical mixing.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_u_vadv&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on the velocity field from vertical advection.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_tr_all_tend&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables all tendencies on tracer fields.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_tr_adv&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on tracer fields from advection, both horizontal and vertical.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_tr_hmix&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on tracer fields from horizontal mixing.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+                &lt;nml_option name=&quot;config_disable_tr_vmix&quot; type=&quot;logical&quot; default_value=&quot;.false.&quot; units=&quot;unitless&quot;
+                            description=&quot;Disables tendencies on tracer fields from vertical mixing.&quot;
+                            possible_values=&quot;.true. or .false.&quot;
+                /&gt;
+        &lt;/nml_record&gt;
+        &lt;var_struct name=&quot;state&quot; time_levs=&quot;2&quot;&gt;
+                &lt;var_array name=&quot;tracers&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;temperature&quot; array_group=&quot;dynamics&quot; streams=&quot;iro&quot; units=&quot;degrees Celsius&quot;
+                             description=&quot;potential temperature&quot;
+                        /&gt;
+                        &lt;var name=&quot;salinity&quot; array_group=&quot;dynamics&quot; streams=&quot;iro&quot; units=&quot;grams salt per kilogram seawater&quot;
+                             description=&quot;salinity&quot;
+                        /&gt;
+                        &lt;var name=&quot;tracer1&quot; array_group=&quot;testing&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                             description=&quot;A tracer with value 1.0 to test conservation.  {\color{red} REMOVE THIS VARIABLE}&quot;
+                        /&gt;
+                &lt;/var_array&gt;
+                &lt;var name=&quot;xtime&quot; type=&quot;text&quot; dimensions=&quot;Time&quot; streams=&quot;ro&quot; units=&quot;unitless&quot;
+                     description=&quot;model time, with format 'YYYY-MM-DD_HH:MM:SS'&quot;
+                /&gt;
+                &lt;var name=&quot;u&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; streams=&quot;ir&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;horizonal velocity, normal component to an edge&quot;
+                /&gt;
+                &lt;var name=&quot;h&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;iro&quot; units=&quot;m&quot;
+                     description=&quot;layer thickness&quot;
+                /&gt;
+                &lt;var name=&quot;rho&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;iro&quot; units=&quot;kg m^{-3}&quot;
+                     description=&quot;density&quot;
+                /&gt;
+                &lt;var name=&quot;uBtr&quot; type=&quot;real&quot; dimensions=&quot;nEdges Time&quot; streams=&quot;r&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;barotropic velocity, used in split-explicit time-stepping&quot;
+                /&gt;
+                &lt;var name=&quot;ssh&quot; type=&quot;real&quot; dimensions=&quot;nCells Time&quot; streams=&quot;o&quot; units=&quot;m&quot;
+                     description=&quot;sea surface height&quot;
+                /&gt;
+                &lt;var name=&quot;uBtrSubcycle&quot; type=&quot;real&quot; dimensions=&quot;nEdges Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;barotropic velocity, used in subcycling in stage 2 of split-explicit time-stepping&quot;
+                /&gt;
+                &lt;var name=&quot;sshSubcycle&quot; type=&quot;real&quot; dimensions=&quot;nCells Time&quot; units=&quot;m&quot;
+                     description=&quot;sea surface height, used in subcycling in stage 2 of split-explicit time-stepping&quot;
+                /&gt;
+                &lt;var name=&quot;FBtr&quot; type=&quot;real&quot; dimensions=&quot;nEdges Time&quot; units=&quot;m^2 s^{-1}&quot;
+                     description=&quot;Barotropic thickness flux at each edge, used to advance sea surface height in each subcycle of stage 2 of the split-explicit algorithm.&quot;
+                /&gt;
+                &lt;var name=&quot;GBtrForcing&quot; type=&quot;real&quot; dimensions=&quot;nEdges Time&quot; units=&quot;m s^{-2}&quot;
+                     description=&quot;Barotropic tendency computed from the baroclinic equations in stage 1 of the split-explicit algorithm.&quot;
+                /&gt;
+                &lt;var name=&quot;uBcl&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;baroclinic velocity, used in split-explicit time-stepping&quot;
+                /&gt;
+                &lt;var name=&quot;zMid&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;m&quot;
+                     description=&quot;z-coordinate of the mid-depth of the layer&quot;
+                /&gt;
+                &lt;var name=&quot;v&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;horizontal velocity, tangential to an edge&quot;
+                /&gt;
+                &lt;var name=&quot;uTransport&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;horizontal velocity used to transport mass and tracers&quot;
+                /&gt;
+                &lt;var name=&quot;uBolusGM&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;uBolusGMX&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;uBolusGMY&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;uBolusGMZ&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;uBolusGMZonal&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; streams=&quot;o&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;uBolusGMMeridional&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; streams=&quot;o&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;hEddyFlux&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;h_kappa&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;h_kappa_q&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;&quot;
+                     description=&quot;&quot;
+                /&gt;
+                &lt;var name=&quot;divergence&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;divergence of horizonal velocity&quot;
+                /&gt;
+                &lt;var name=&quot;vorticity&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nVertices Time&quot; streams=&quot;o&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;curl of horizontal velocity&quot;
+                /&gt;
+                &lt;var name=&quot;Vor_edge&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;vorticity averaged from vertices to edges&quot;
+                /&gt;
+                &lt;var name=&quot;h_edge&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m&quot;
+                     description=&quot;layer thickness averaged from cell center to edges&quot;
+                /&gt;
+                &lt;var name=&quot;h_vertex&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nVertices Time&quot; units=&quot;m&quot;
+                     description=&quot;layer thickness averaged from cell center to vertices&quot;
+                /&gt;
+                &lt;var name=&quot;ke&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m^2 s^{-2}&quot;
+                     description=&quot;kinetic energy of horizonal velocity&quot;
+                /&gt;
+                &lt;var name=&quot;kev&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nVertices Time&quot; streams=&quot;o&quot; units=&quot;m^2 s^{-2}&quot;
+                     description=&quot;kinetic energy of horizonal velocity defined at vertices&quot;
+                /&gt;
+                &lt;var name=&quot;kevc&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m^2 s^{-2}&quot;
+                     description=&quot;kinetic energy of horizonal velocity defined at vertices&quot;
+                /&gt;
+                &lt;var name=&quot;ke_edge&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m^2 s^{-2}&quot;
+                     description=&quot;kinetic energy of horizonal velocity defined at edges&quot;
+                /&gt;
+                &lt;var name=&quot;Vor_vertex&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nVertices Time&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;curl of horizontal velocity defined at vertices&quot;
+                /&gt;
+                &lt;var name=&quot;Vor_cell&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;curl of horizontal velocity defined at cell centers&quot;
+                /&gt;
+                &lt;var name=&quot;uReconstructX&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;component of horizontal velocity in the x-direction (cartesian)&quot;
+                /&gt;
+                &lt;var name=&quot;uReconstructY&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;component of horizontal velocity in the y-direction (cartesian)&quot;
+                /&gt;
+                &lt;var name=&quot;uReconstructZ&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;component of horizontal velocity in the z-direction (cartesian)&quot;
+                /&gt;
+                &lt;var name=&quot;uReconstructZonal&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;component of horizontal velocity in the eastward direction&quot;
+                /&gt;
+                &lt;var name=&quot;uReconstructMeridional&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;component of horizontal velocity in the northward&quot;
+                /&gt;
+                &lt;var name=&quot;uSrcReconstructX&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;wind stress in the x-direction (cartesian)&quot;
+                /&gt;
+                &lt;var name=&quot;uSrcReconstructY&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;wind stress in the y-direction (cartesian)&quot;
+                /&gt;
+                &lt;var name=&quot;uSrcReconstructZ&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;wind stress in the z-direction (cartesian)&quot;
+                /&gt;
+                &lt;var name=&quot;uSrcReconstructZonal&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;wind stress in the eastward direction&quot;
+                /&gt;
+                &lt;var name=&quot;uSrcReconstructMeridional&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;wind stress in the northward direction&quot;
+                /&gt;
+                &lt;var name=&quot;MontPot&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;m^2 s^{-2}&quot;
+                     description=&quot;Montgomery potential, may be used as the pressure for isopycnal coordinates.&quot;
+                /&gt;
+                &lt;var name=&quot;pressure&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;pressure used in the momentum equation&quot;
+                /&gt;
+                &lt;var name=&quot;wTop&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nCells Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;vertical transport through the layer interface at the top of the cell&quot;
+                /&gt;
+                &lt;var name=&quot;vertVelocityTop&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nCells Time&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;vertical velocity defined at center (horizonally) and top (vertically) of cell&quot;
+                /&gt;
+                &lt;var name=&quot;rhoDisplaced&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;kg m^{-3}&quot;
+                     description=&quot;potential density displaced to the mid-depth of top layer&quot;
+                /&gt;
+                &lt;var name=&quot;BruntVaisalaFreqTop&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;s^{-2}&quot;
+                     description=&quot;Brunt Vaisala frequency defined at the center (horizontally) and top (vertically) of cell&quot;
+                /&gt;
+                &lt;var name=&quot;viscosity&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; streams=&quot;o&quot; units=&quot;m^2 s^{-1}&quot;
+                     description=&quot;horizontal viscosity&quot;
+                /&gt;
+                &lt;var name=&quot;vh&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m^2 s^{-1}&quot;
+                     description=&quot;thickness flux in the tangent direction (from vertex1 to vertex2)&quot;
+                /&gt;
+                &lt;var name=&quot;circulation&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nVertices Time&quot; units=&quot;m^2 s^{-1}&quot;
+                     description=&quot;area-integrated vorticity&quot;
+                /&gt;
+                &lt;var name=&quot;gradVor_t&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;s^{-1} m^{-1}&quot;
+                     description=&quot;gradient of vorticity in the tangent direction (from vertex1 to vertex2)&quot;
+                /&gt;
+                &lt;var name=&quot;gradVor_n&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;s^{-1} m^{-1}&quot;
+                     description=&quot;gradient of vorticity in the normal direction (from cell1 to cell2)&quot;
+                /&gt;
+                &lt;var name=&quot;areaCellGlobal&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;m^2&quot;
+                     description=&quot;sum of the areaCell variable over the full domain, used to normalize global statistics&quot;
+                /&gt;
+                &lt;var name=&quot;areaEdgeGlobal&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;m^2&quot;
+                     description=&quot;sum of the areaEdge variable over the full domain, used to normalize global statistics&quot;
+                /&gt;
+                &lt;var name=&quot;areaTriangleGlobal&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;m^2&quot;
+                     description=&quot;sum of the areaTriangle variable over the full domain, used to normalize global statistics&quot;
+                /&gt;
+                &lt;var name=&quot;volumeCellGlobal&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;m^3&quot;
+                     description=&quot;sum of the volumeCell variable over the full domain, used to normalize global statistics&quot;
+                /&gt;
+                &lt;var name=&quot;volumeEdgeGlobal&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;m^3&quot;
+                     description=&quot;sum of the volumeEdge variable over the full domain, used to normalize global statistics&quot;
+                /&gt;
+                &lt;var name=&quot;CFLNumberGlobal&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;maximum CFL number over the full domain&quot;
+                /&gt;
+                &lt;var name=&quot;nAccumulate&quot; type=&quot;real&quot; dimensions=&quot;Time&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;number of timesteps in time-averaged variables&quot;
+                /&gt;
+                &lt;var name=&quot;acc_ssh&quot; type=&quot;real&quot; dimensions=&quot;nCells Time&quot; streams=&quot;o&quot; units=&quot;m&quot;
+                     description=&quot;time-averaged sea surface height&quot;
+                /&gt;
+                &lt;var name=&quot;acc_sshVar&quot; type=&quot;real&quot; dimensions=&quot;nCells Time&quot; streams=&quot;o&quot; units=&quot;m&quot;
+                     description=&quot;variance of sea surface height&quot;
+                /&gt;
+                &lt;var name=&quot;acc_uReconstructZonal&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;time-averaged velocity in the eastward direction&quot;
+                /&gt;
+                &lt;var name=&quot;acc_uReconstructMeridional&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;time-averaged velocity in the northward direction&quot;
+                /&gt;
+                &lt;var name=&quot;acc_uReconstructZonalVar&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;variance of velocity in the eastward direction&quot;
+                /&gt;
+                &lt;var name=&quot;acc_uReconstructMeridionalVar&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;variance of velocity in the northward direction&quot;
+                /&gt;
+                &lt;var name=&quot;acc_u&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;time-averaged velocity, normal to cell edge&quot;
+                /&gt;
+                &lt;var name=&quot;acc_uVar&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;variance of velocity, normal to cell edge&quot;
+                /&gt;
+                &lt;var name=&quot;acc_vertVelocityTop&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nCells Time&quot; streams=&quot;o&quot; units=&quot;m s^{-1}&quot;
+                     description=&quot;time-averaged vertical velocity at top of cell&quot;
+                /&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;mesh&quot; time_levs=&quot;0&quot;&gt;
+                &lt;var name=&quot;latCell&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                         description=&quot;Latitude location of cell centers in radians.&quot;
+                /&gt;
+                &lt;var name=&quot;lonCell&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                     description=&quot;Longitude location of cell centers in radians.&quot;
+                /&gt;
+                &lt;var name=&quot;xCell&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;X Coordinate in cartesian space of cell centers.&quot;
+                /&gt;
+                &lt;var name=&quot;yCell&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Y Coordinate in cartesian space of cell centers.&quot;
+                /&gt;
+                &lt;var name=&quot;zCell&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Z Coordinate in cartesian space of cell centers.&quot;
+                /&gt;
+                &lt;var name=&quot;indexToCellID&quot; type=&quot;integer&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of global cell IDs.&quot;
+                /&gt;
+                &lt;var name=&quot;latEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                     description=&quot;Latitude location of edge midpoints in radians.&quot;
+                /&gt;
+                &lt;var name=&quot;lonEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                     description=&quot;Longitude location of edge midpoints in radians.&quot;
+                /&gt;
+                &lt;var name=&quot;xEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;X Coordinate in cartesian space of edge midpoints.&quot;
+                /&gt;
+                &lt;var name=&quot;yEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Y Coordinate in cartesian space of edge midpoints.&quot;
+                /&gt;
+                &lt;var name=&quot;zEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Z Coordinate in cartesian space of edge midpoints.&quot;
+                /&gt;
+                &lt;var name=&quot;indexToEdgeID&quot; type=&quot;integer&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of global edge IDs.&quot;
+                /&gt;
+                &lt;var name=&quot;latVertex&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                     description=&quot;Latitude location of vertices in radians.&quot;
+                /&gt;
+                &lt;var name=&quot;lonVertex&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                     description=&quot;Longitude location of vertices in radians.&quot;
+                /&gt;
+                &lt;var name=&quot;xVertex&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;X Coordinate in cartesian space of vertices.&quot;
+                /&gt;
+                &lt;var name=&quot;yVertex&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Y Coordinate in cartesian space of vertices.&quot;
+                /&gt;
+                &lt;var name=&quot;zVertex&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Z Coordinate in cartesian space of vertices.&quot;
+                /&gt;
+                &lt;var name=&quot;indexToVertexID&quot; type=&quot;integer&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of global vertex IDs.&quot;
+                /&gt;
+                &lt;var name=&quot;meshDensity&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Value of density function used to generate a particular mesh at cell centers.&quot;
+                /&gt;
+                &lt;var name=&quot;meshScalingDel2&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;ro&quot; units=&quot;unitless&quot;
+                     description=&quot;Coefficient to Laplacian mixing terms in momentum and tracer equations, so that viscosity and diffusion scale with mesh.&quot;
+                /&gt;
+                &lt;var name=&quot;meshScalingDel4&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;ro&quot; units=&quot;unitless&quot;
+                     description=&quot;Coefficient to biharmonic mixing terms in momentum and tracer equations, so that biharmonic viscosity and diffusion coefficients scale with mesh.&quot;
+                /&gt;
+                &lt;var name=&quot;meshScaling&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;ro&quot; units=&quot;unitless&quot;
+                     description=&quot;Coefficient used for mesh scaling, such as the Leith parameter.&quot;
+                /&gt;
+                &lt;var name=&quot;cellsOnEdge&quot; type=&quot;integer&quot; dimensions=&quot;TWO nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of cells that straddle each edge.&quot;
+                /&gt;
+                &lt;var name=&quot;nEdgesOnCell&quot; type=&quot;integer&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Number of edges that border each cell.&quot;
+                /&gt;
+                &lt;var name=&quot;nEdgesOnEdge&quot; type=&quot;integer&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Number of edges that surround each of the cells that straddle each edge. These edges are used to reconstruct the tangential velocities.&quot;
+                /&gt;
+                &lt;var name=&quot;edgesOnCell&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of edges that border each cell.&quot;
+                /&gt;
+                &lt;var name=&quot;edgesOnEdge&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges2 nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of edges that border each of the cells that straddle each edge.&quot;
+                /&gt;
+                &lt;var name=&quot;weightsOnEdge&quot; type=&quot;real&quot; dimensions=&quot;maxEdges2 nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Reconstruction weights associated with each of the edgesOnEdge.&quot;
+                /&gt;
+                &lt;var name=&quot;dvEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;m&quot;
+                     description=&quot;Length of each edge, computed as the distance between verticesOnEdge.&quot;
+                /&gt;
+                &lt;var name=&quot;dcEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;m&quot;
+                     description=&quot;Length of each edge, computed as the distance between cellsOnEdge.&quot;
+                /&gt;
+                &lt;var name=&quot;angleEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;radians&quot;
+                     description=&quot;Angle the edge normal makes with local eastward direction.&quot;
+                /&gt;
+                &lt;var name=&quot;areaCell&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;m^2&quot;
+                     description=&quot;Area of each cell in the primary grid.&quot;
+                /&gt;
+                &lt;var name=&quot;areaTriangle&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;m^2&quot;
+                     description=&quot;Area of each cell (triangle) in the dual grid.&quot;
+                /&gt;
+                &lt;var name=&quot;edgeNormalVectors&quot; type=&quot;real&quot; dimensions=&quot;R3 nEdges&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;Normal vector defined at an edge.&quot;
+                /&gt;
+                &lt;var name=&quot;localVerticalUnitVectors&quot; type=&quot;real&quot; dimensions=&quot;R3 nCells&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;Unit surface normal vectors defined at cell centers.&quot;
+                /&gt;
+                &lt;var name=&quot;cellTangentPlane&quot; type=&quot;real&quot; dimensions=&quot;R3 TWO nCells&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;The two vectors that define a tangent plane at a cell center.&quot;
+                /&gt;
+                &lt;var name=&quot;cellsOnCell&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of cells that neighbor each cell.&quot;
+                /&gt;
+                &lt;var name=&quot;verticesOnCell&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of vertices that border each cell.&quot;
+                /&gt;
+                &lt;var name=&quot;verticesOnEdge&quot; type=&quot;integer&quot; dimensions=&quot;TWO nEdges&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of vertices that straddle each edge.&quot;
+                /&gt;
+                &lt;var name=&quot;edgesOnVertex&quot; type=&quot;integer&quot; dimensions=&quot;vertexDegree nVertices&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of edges that share a vertex as an endpoint.&quot;
+                /&gt;
+                &lt;var name=&quot;cellsOnVertex&quot; type=&quot;integer&quot; dimensions=&quot;vertexDegree nVertices&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;List of cells that share a vertex.&quot;
+                /&gt;
+                &lt;var name=&quot;kiteAreasOnVertex&quot; type=&quot;real&quot; dimensions=&quot;vertexDegree nVertices&quot; streams=&quot;iro&quot; units=&quot;m^2&quot;
+                     description=&quot;Area of the portions of each dual cell that are part of each cellsOnVertex.&quot;
+                /&gt;
+                &lt;var name=&quot;fEdge&quot; type=&quot;real&quot; dimensions=&quot;nEdges&quot; streams=&quot;iro&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;Coriolis parameter at edges.&quot;
+                /&gt;
+                &lt;var name=&quot;fVertex&quot; type=&quot;real&quot; dimensions=&quot;nVertices&quot; streams=&quot;iro&quot; units=&quot;s^{-1}&quot;
+                     description=&quot;Coriolis parameter at vertices.&quot;
+                /&gt;
+                &lt;var name=&quot;bottomDepth&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;m&quot;
+                     description=&quot;Depth of the bottom of the ocean. Given as a positive distance from sea level.&quot;
+                /&gt;
+                &lt;var name=&quot;deriv_two&quot; type=&quot;real&quot; dimensions=&quot;maxEdges2 TWO nEdges&quot; units=&quot;&quot;
+                     description=&quot;Value of the second derivative of the polynomial used for reconstruction of cell center quantities at edges.&quot;
+                /&gt;
+                &lt;var name=&quot;adv_coefs&quot; type=&quot;real&quot; dimensions=&quot;nAdvectionCells nEdges&quot; units=&quot;&quot;
+                     description=&quot;Weighting coefficients used for reconstruction of cell center quantities at edges. Used in advection routines.&quot;
+                /&gt;
+                &lt;var name=&quot;adv_coefs_2nd&quot; type=&quot;real&quot; dimensions=&quot;nAdvectionCells nEdges&quot; units=&quot;&quot;
+                     description=&quot;Weighting coefficients used for reconstruction of cell center quantities at edges. Used in advection routines.&quot;
+                /&gt;
+                &lt;var name=&quot;adv_coefs_3rd&quot; type=&quot;real&quot; dimensions=&quot;nAdvectionCells nEdges&quot; units=&quot;&quot;
+                        description=&quot;Wegihting coefficients used for reconstruction of cell center quantities at edges. Used in advection routines.&quot;
+                /&gt;
+                &lt;var name=&quot;advCellsForEdge&quot; type=&quot;integer&quot; dimensions=&quot;nAdvectionCells nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;List of cells used to reconstruct a cell quantity at an edge. Used in advection routines.&quot;
+                /&gt;
+                &lt;var name=&quot;nAdvCellsForEdge&quot; type=&quot;integer&quot; dimensions=&quot;nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;Number of cells used in reconstruction of cell center quantities at an edge. Used in advection routines.&quot;
+                /&gt;
+                &lt;var name=&quot;highOrderAdvectionMask&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask for high order advection. Values are 1 if high order is used, and 0 if not.&quot;
+                /&gt;
+                &lt;var name=&quot;lowOrderAdvectionMask&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask for low order advection. Values are 1 if low order is used, and 0 if not.&quot;
+                /&gt;
+                &lt;var name=&quot;defc_a&quot; type=&quot;real&quot; dimensions=&quot;maxEdges nCells&quot; units=&quot;&quot;
+                     description=&quot;Variable used with advection setup to compute advection coefficients. Deformation weight coefficients.&quot;
+                /&gt;
+                &lt;var name=&quot;defc_b&quot; type=&quot;real&quot; dimensions=&quot;maxEdges nCells&quot; units=&quot;&quot;
+                     description=&quot;Variable used with advection setup to compute advection coefficients. Deformation weight coefficients.&quot;
+                /&gt;
+                &lt;var name=&quot;kdiff&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;&quot;
+                         description=&quot;{\color{red} TO BE REMOVED}&quot;
+                /&gt;
+                &lt;var name=&quot;coeffs_reconstruct&quot; type=&quot;real&quot; dimensions=&quot;R3 maxEdges nCells&quot; units=&quot;&quot;
+                         description=&quot;{\color{red} TO BE REMOVED}&quot;
+                /&gt;
+                &lt;var name=&quot;maxLevelCell&quot; type=&quot;integer&quot; dimensions=&quot;nCells&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Index to the last active ocean cell in each column.&quot;
+                /&gt;
+                &lt;var name=&quot;maxLevelEdgeTop&quot; type=&quot;integer&quot; dimensions=&quot;nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;Index to the last edge in a column with active ocean cells on both sides of it.&quot;
+                /&gt;
+                &lt;var name=&quot;maxLevelEdgeBot&quot; type=&quot;integer&quot; dimensions=&quot;nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;Index to the last edge in a column with at least one active ocean cell on either side of it.&quot;
+                /&gt;
+                &lt;var name=&quot;maxLevelVertexTop&quot; type=&quot;integer&quot; dimensions=&quot;nVertices&quot; units=&quot;unitless&quot;
+                     description=&quot;Index to the last vertex in a column with all active cells around it.&quot;
+                /&gt;
+                &lt;var name=&quot;maxLevelVertexBot&quot; type=&quot;integer&quot; dimensions=&quot;nVertices&quot; units=&quot;unitless&quot;
+                     description=&quot;Index to the last vertex in a column with at least one active ocean cell around it.&quot;
+                /&gt;
+                &lt;var name=&quot;refBottomDepth&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels&quot; streams=&quot;iro&quot; units=&quot;m&quot;
+                     description=&quot;Reference depth of ocean for each vertical level. Used in 'z-level' type runs.&quot;
+                /&gt;
+                &lt;var name=&quot;refBottomDepthTopOfCell&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1&quot; units=&quot;m&quot;
+                     description=&quot;Reference depth of ocean for each vertical interface. Used in 'z-level' type runs.&quot;
+                /&gt;
+                &lt;var name=&quot;hZLevel&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels&quot; streams=&quot;iro&quot; units=&quot;m&quot;
+                        description=&quot;{\color{red} TO BE REMOVED}&quot;
+                /&gt;
+                &lt;var name=&quot;vertCoordMovementWeights&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels&quot; streams=&quot;iro&quot; units=&quot;unitless&quot;
+                     description=&quot;Weights used for distribution of sea surface heigh purturbations through multiple vertical levels.&quot;
+                /&gt;
+                &lt;var name=&quot;boundaryEdge&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nEdges&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask for determining boundary edges. A boundary edge has only one active ocean cell neighboring it.&quot;
+                /&gt;
+                &lt;var name=&quot;boundaryVertex&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nVertices&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask for determining boundary vertices. A boundary vertex has at least one inactive cell neighboring it.&quot;
+                /&gt;
+                &lt;var name=&quot;boundaryCell&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nCells&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask for determining boundary cells. A boundary cell has at least one inactive cell neighboring it.&quot;
+                /&gt;
+                &lt;var name=&quot;edgeMask&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nEdges&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask on edges that determines if computations should be done on edge.&quot;
+                /&gt;
+                &lt;var name=&quot;vertexMask&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nVertices&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask on vertices that determines if computations should be done on vertice.&quot;
+                /&gt;
+                &lt;var name=&quot;cellMask&quot; type=&quot;integer&quot; dimensions=&quot;nVertLevels nCells&quot; streams=&quot;o&quot; units=&quot;unitless&quot;
+                     description=&quot;Mask on cells that determines if computations should be done on cell.&quot;
+                /&gt;
+                &lt;var name=&quot;u_src&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges&quot; streams=&quot;ir&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;Velocity forcing field. Defines a forcing at an edge.&quot;
+                /&gt;
+                &lt;var name=&quot;temperatureRestore&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;ir&quot; units=&quot;^\circ C&quot;
+                     description=&quot;Temperature restoring field, for restoring temperature at the surface.&quot;
+                /&gt;
+                &lt;var name=&quot;salinityRestore&quot; type=&quot;real&quot; dimensions=&quot;nCells&quot; streams=&quot;ir&quot; units=&quot;PSU&quot;
+                     description=&quot;Salinity restoring field, for restoring salinity at the surface.&quot;
+                /&gt;
+                &lt;var name=&quot;windStressMonthly&quot; type=&quot;real&quot; dimensions=&quot;nMonths nEdges&quot; streams=&quot;ir&quot; units=&quot;N m^{-2}&quot;
+                     description=&quot;Monthly wind stress field, defined at the surface for use in monthly forcing.&quot;
+                /&gt;
+                &lt;var name=&quot;temperatureRestoreMonthly&quot; type=&quot;real&quot; dimensions=&quot;nMonths nCells&quot; streams=&quot;ir&quot; units=&quot;^\circ C&quot;
+                     description=&quot;Monthly temperature restorying field, defined at the surface for use in monthly forcing.&quot;
+                /&gt;
+                &lt;var name=&quot;salinityRestoreMonthly&quot; type=&quot;real&quot; dimensions=&quot;nMonths nCells&quot; streams=&quot;ir&quot; units=&quot;PSU&quot;
+                     description=&quot;Monthly salinity resotring field, defined at the surface, for use in monthly forcing.&quot;
+                /&gt;
+                &lt;var name=&quot;edgeSignOnCell&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges nCells&quot; units=&quot;unitless&quot;
+                     description=&quot;Sign of edge contributions to a cell for each edge on cell. Used for bit-reproducible loops. Represents directionality of vector connecting cells.&quot;
+                /&gt;
+                &lt;var name=&quot;edgeSignOnVertex&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges nVertices&quot; units=&quot;unitless&quot;
+                     description=&quot;Sign of edge contributions to a vertex for each edge on vertex. Used for bit-reproducible loops. Represents directionality of vector connecting vertices.&quot;
+                /&gt;
+                &lt;var name=&quot;kiteIndexOnCell&quot; type=&quot;integer&quot; dimensions=&quot;maxEdges nCells&quot; units=&quot;unitless&quot;
+                     description=&quot;Index of kite in dual grid, based on verticesOnCell.&quot;
+                /&gt;
+                &lt;var name=&quot;seaSurfacePressure&quot; type=&quot;real&quot; dimensions=&quot;nCells Time&quot; streams=&quot;ir&quot; units=&quot;Pa&quot;
+                     description=&quot;Pressure defined at the sea surface.&quot;
+                /&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;tend&quot; time_levs=&quot;1&quot;&gt;
+                &lt;var_array name=&quot;tracers&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot;&gt;
+                        &lt;var name=&quot;tend_temperature&quot; array_group=&quot;dynamics&quot; units=&quot;K s^{-1}&quot; name_in_code=&quot;temperature&quot;
+                             description=&quot;time tendency of potential temperature&quot;
+                        /&gt;
+                        &lt;var name=&quot;tend_salinity&quot; array_group=&quot;dynamics&quot; units=&quot;PSU s^{-1}&quot; name_in_code=&quot;salinity&quot;
+                             description=&quot;time tendency of salinity measured as change in practical salinity units per second&quot;
+                        /&gt;
+                        &lt;var name=&quot;tend_tracer1&quot; array_group=&quot;testing&quot; units=&quot;tracer s^{-1}&quot; name_in_code=&quot;tracer1&quot;
+                             description=&quot;time tendency of an arbitary tracer&quot;
+                        /&gt;
+                &lt;/var_array&gt;
+                &lt;var name=&quot;tend_u&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nEdges Time&quot; units=&quot;m s^{-2}&quot; name_in_code=&quot;u&quot;
+                     description=&quot;time tendency of normal component of velocity&quot;
+                /&gt;
+                &lt;var name=&quot;tend_h&quot; type=&quot;real&quot; dimensions=&quot;nVertLevels nCells Time&quot; units=&quot;m s^{-1}&quot; name_in_code=&quot;h&quot;
+                     description=&quot;time tendency of layer thickness&quot;
+                /&gt;
+                &lt;var name=&quot;tend_ssh&quot; type=&quot;real&quot; dimensions=&quot;nCells Time&quot; units=&quot;m s^{-1}&quot; name_in_code=&quot;ssh&quot;
+                     description=&quot;time tendency of sea-surface height&quot;
+                /&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;diagnostics&quot; time_levs=&quot;1&quot;&gt;
+                &lt;var name=&quot;RiTopOfCell&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nCells Time&quot; units=&quot;nondimensional&quot;
+                     description=&quot;gradient Richardson number defined at the center (horizontally) and top (vertically)&quot;
+                /&gt;
+                &lt;var name=&quot;RiTopOfEdge&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nEdges Time&quot; units=&quot;nondimensional&quot;
+                     description=&quot;gradient Richardson number defined at the edge (horizontally) and top (vertically)&quot;
+                /&gt;
+                &lt;var name=&quot;vertViscTopOfEdge&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nEdges Time&quot; units=&quot;m^2 s^{-1}&quot;
+                     description=&quot;vertical viscosity defined at the edge (horizontally) and top (vertically)&quot;
+                /&gt;
+                &lt;var name=&quot;vertDiffTopOfCell&quot; type=&quot;real&quot; dimensions=&quot;nVertLevelsP1 nCells Time&quot; units=&quot;m^2 s^{-1}&quot;
+                     description=&quot;vertical diffusion defined at the edge (horizontally) and top (vertically)&quot;
+                /&gt;
+        &lt;/var_struct&gt;
+&lt;/registry&gt;

Copied: trunk/mpas/src/core_sw/Registry.xml (from rev 2662, branches/xml_registry/src/core_sw/Registry.xml)
===================================================================
--- trunk/mpas/src/core_sw/Registry.xml                                (rev 0)
+++ trunk/mpas/src/core_sw/Registry.xml        2013-03-22 19:32:26 UTC (rev 2663)
@@ -0,0 +1,146 @@
+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;registry&gt;
+        &lt;dims&gt;
+                &lt;dim name=&quot;nCells&quot;/&gt;
+                &lt;dim name=&quot;nEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges&quot;/&gt;
+                &lt;dim name=&quot;maxEdges2&quot;/&gt;
+                &lt;dim name=&quot;nVertices&quot;/&gt;
+                &lt;dim name=&quot;TWO&quot;                definition=&quot;2&quot;/&gt;
+                &lt;dim name=&quot;R3&quot;                 definition=&quot;3&quot;/&gt;
+                &lt;dim name=&quot;FIFTEEN&quot;            definition=&quot;15&quot;/&gt;
+                &lt;dim name=&quot;TWENTYONE&quot;          definition=&quot;21&quot;/&gt;
+                &lt;dim name=&quot;vertexDegree&quot;/&gt;
+                &lt;dim name=&quot;nVertLevels&quot;/&gt;
+                &lt;dim name=&quot;nTracers&quot;/&gt;
+        &lt;/dims&gt;
+        &lt;nml_record name=&quot;sw_model&quot;&gt;
+                &lt;nml_option name=&quot;config_test_case&quot;                  type=&quot;integer&quot;       default_value=&quot;5&quot;/&gt;
+                &lt;nml_option name=&quot;config_time_integration&quot;           type=&quot;character&quot;     default_value=&quot;RK4&quot;/&gt;
+                &lt;nml_option name=&quot;config_dt&quot;                         type=&quot;real&quot;          default_value=&quot;172.8&quot;/&gt;
+                &lt;nml_option name=&quot;config_calendar_type&quot;              type=&quot;character&quot;     default_value=&quot;360day&quot;/&gt;
+                &lt;nml_option name=&quot;config_start_time&quot;                 type=&quot;character&quot;     default_value=&quot;0000-01-01_00:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_stop_time&quot;                  type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_run_duration&quot;               type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+                &lt;nml_option name=&quot;config_stats_interval&quot;             type=&quot;integer&quot;       default_value=&quot;100&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_ScaleWithMesh&quot;            type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_mom_eddy_visc2&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_mom_eddy_visc4&quot;           type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_tracer_eddy_diff2&quot;        type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_h_tracer_eddy_diff4&quot;        type=&quot;real&quot;          default_value=&quot;0.0&quot;/&gt;
+                &lt;nml_option name=&quot;config_thickness_adv_order&quot;        type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+                &lt;nml_option name=&quot;config_tracer_adv_order&quot;           type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+                &lt;nml_option name=&quot;config_positive_definite&quot;          type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_monotonic&quot;                  type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_wind_stress&quot;                type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_bottom_drag&quot;                type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_apvm_upwinding&quot;             type=&quot;real&quot;          default_value=&quot;0.5&quot;/&gt;
+                &lt;nml_option name=&quot;config_num_halos&quot;                  type=&quot;integer&quot;       default_value=&quot;2&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;io&quot;&gt;
+                &lt;nml_option name=&quot;config_input_name&quot;                 type=&quot;character&quot;     default_value=&quot;grid.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_name&quot;                type=&quot;character&quot;     default_value=&quot;output.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_name&quot;               type=&quot;character&quot;     default_value=&quot;restart.nc&quot;/&gt;
+                &lt;nml_option name=&quot;config_output_interval&quot;            type=&quot;character&quot;     default_value=&quot;06:00:00&quot;/&gt;
+                &lt;nml_option name=&quot;config_frames_per_outfile&quot;         type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_num_iotasks&quot;            type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_pio_stride&quot;                 type=&quot;integer&quot;       default_value=&quot;1&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;decomposition&quot;&gt;
+                &lt;nml_option name=&quot;config_block_decomp_file_prefix&quot;   type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+                &lt;nml_option name=&quot;config_number_of_blocks&quot;           type=&quot;integer&quot;       default_value=&quot;0&quot;/&gt;
+                &lt;nml_option name=&quot;config_explicit_proc_decomp&quot;       type=&quot;logical&quot;       default_value=&quot;.false.&quot;/&gt;
+                &lt;nml_option name=&quot;config_proc_decomp_file_prefix&quot;    type=&quot;character&quot;     default_value=&quot;graph.info.part.&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;nml_record name=&quot;restart&quot;&gt;
+                &lt;nml_option name=&quot;config_do_restart&quot;                 type=&quot;logical&quot;       default_value=&quot;false&quot;/&gt;
+                &lt;nml_option name=&quot;config_restart_interval&quot;           type=&quot;character&quot;     default_value=&quot;none&quot;/&gt;
+        &lt;/nml_record&gt;
+        &lt;var_struct name=&quot;state&quot; time_levs=&quot;2&quot;&gt;
+                &lt;var name=&quot;xtime&quot;                             type=&quot;text&quot;     dimensions=&quot;Time&quot;                        streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;u&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;h&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;tracers&quot;                           type=&quot;real&quot;     dimensions=&quot;nTracers nVertLevels nCells Time&quot; streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;v&quot;                                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;divergence&quot;                        type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;vorticity&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;vorticity_cell&quot;                    type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_edge&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;h_edge&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;ke&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_vertex&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;  streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;pv_cell&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructX&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructY&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZ&quot;                     type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructZonal&quot;                 type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;uReconstructMeridional&quot;            type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;     streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;vh&quot;                                type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;circulation&quot;                       type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;/&gt;
+                &lt;var name=&quot;gradPVt&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;gradPVn&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;/&gt;
+                &lt;var name=&quot;h_vertex&quot;                          type=&quot;real&quot;     dimensions=&quot;nVertLevels nVertices Time&quot;/&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;mesh&quot; time_levs=&quot;0&quot;&gt;
+                &lt;var name=&quot;latCell&quot;                           type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonCell&quot;                           type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToCellID&quot;                     type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;latEdge&quot;                           type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonEdge&quot;                           type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToEdgeID&quot;                     type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;latVertex&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;lonVertex&quot;                         type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;xVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;yVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;zVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;indexToVertexID&quot;                   type=&quot;integer&quot;  dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;meshDensity&quot;                       type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;meshScalingDel2&quot;                   type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;meshScalingDel4&quot;                   type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;ro&quot;/&gt;
+                &lt;var name=&quot;cellsOnEdge&quot;                       type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnCell&quot;                      type=&quot;integer&quot;  dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;nEdgesOnEdge&quot;                      type=&quot;integer&quot;  dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnCell&quot;                       type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnEdge&quot;                       type=&quot;integer&quot;  dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;weightsOnEdge&quot;                     type=&quot;real&quot;     dimensions=&quot;maxEdges2 nEdges&quot;            streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dvEdge&quot;                            type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;dcEdge&quot;                            type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;angleEdge&quot;                         type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;areaCell&quot;                          type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;areaTriangle&quot;                      type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgeNormalVectors&quot;                 type=&quot;real&quot;     dimensions=&quot;R3 nEdges&quot;                   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;localVerticalUnitVectors&quot;          type=&quot;real&quot;     dimensions=&quot;R3 nCells&quot;                   streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;cellTangentPlane&quot;                  type=&quot;real&quot;     dimensions=&quot;R3 TWO nCells&quot;               streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;cellsOnCell&quot;                       type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;verticesOnCell&quot;                    type=&quot;integer&quot;  dimensions=&quot;maxEdges nCells&quot;             streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;verticesOnEdge&quot;                    type=&quot;integer&quot;  dimensions=&quot;TWO nEdges&quot;                  streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;edgesOnVertex&quot;                     type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;cellsOnVertex&quot;                     type=&quot;integer&quot;  dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;kiteAreasOnVertex&quot;                 type=&quot;real&quot;     dimensions=&quot;vertexDegree nVertices&quot;      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fEdge&quot;                             type=&quot;real&quot;     dimensions=&quot;nEdges&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fVertex&quot;                           type=&quot;real&quot;     dimensions=&quot;nVertices&quot;                   streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;fCell&quot;                             type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;h_s&quot;                               type=&quot;real&quot;     dimensions=&quot;nCells&quot;                      streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;deriv_two&quot;                         type=&quot;real&quot;     dimensions=&quot;FIFTEEN TWO nEdges&quot;          streams=&quot;o&quot;/&gt;
+                &lt;var name=&quot;advCells&quot;                          type=&quot;integer&quot;  dimensions=&quot;TWENTYONE nCells&quot;/&gt;
+                &lt;var name=&quot;defc_a&quot;                            type=&quot;real&quot;     dimensions=&quot;maxEdges nCells&quot;/&gt;
+                &lt;var name=&quot;defc_b&quot;                            type=&quot;real&quot;     dimensions=&quot;maxEdges nCells&quot;/&gt;
+                &lt;var name=&quot;kdiff&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;/&gt;
+                &lt;var name=&quot;coeffs_reconstruct&quot;                type=&quot;real&quot;     dimensions=&quot;R3 maxEdges nCells&quot;/&gt;
+                &lt;var name=&quot;boundaryEdge&quot;                      type=&quot;integer&quot;  dimensions=&quot;nVertLevels nEdges&quot;          streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;boundaryVertex&quot;                    type=&quot;integer&quot;  dimensions=&quot;nVertLevels nVertices&quot;       streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;boundaryCell&quot;                      type=&quot;integer&quot;  dimensions=&quot;nVertLevels nCells&quot;          streams=&quot;iro&quot;/&gt;
+                &lt;var name=&quot;u_src&quot;                             type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges&quot;          streams=&quot;iro&quot;/&gt;
+        &lt;/var_struct&gt;
+        &lt;var_struct name=&quot;tend&quot; time_levs=&quot;1&quot;&gt;
+                &lt;var name=&quot;tend_u&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevels nEdges Time&quot;           name_in_code=&quot;u&quot;/&gt;
+                &lt;var name=&quot;tend_h&quot;                            type=&quot;real&quot;     dimensions=&quot;nVertLevels nCells Time&quot;           name_in_code=&quot;h&quot;/&gt;
+                &lt;var name=&quot;tend_tracers&quot;                      type=&quot;real&quot;     dimensions=&quot;nTracers nVertLevels nCells Time&quot;  name_in_code=&quot;tracers&quot;/&gt;
+        &lt;/var_struct&gt;
+&lt;/registry&gt;

Modified: trunk/mpas/src/registry/Makefile
===================================================================
--- trunk/mpas/src/registry/Makefile        2013-03-22 17:48:50 UTC (rev 2662)
+++ trunk/mpas/src/registry/Makefile        2013-03-22 19:32:26 UTC (rev 2663)
@@ -1,9 +1,12 @@
 .SUFFIXES: .c .o
 
-OBJS = parse.o dictionary.o gen_inc.o fortprintf.o
+OBJS = parse.o dictionary.o gen_inc.o fortprintf.o ezxml/ezxml.o
 
 all: parse
 
+ezxml/ezxml.o:
+        (cd ezxml; $(CC) -c ezxml.c)
+
 parse: $(OBJS)
         $(CC) -o $@ $(OBJS)
 

Copied: trunk/mpas/src/registry/Registry.xsd (from rev 2662, branches/xml_registry/src/registry/Registry.xsd)
===================================================================
--- trunk/mpas/src/registry/Registry.xsd                                (rev 0)
+++ trunk/mpas/src/registry/Registry.xsd        2013-03-22 19:32:26 UTC (rev 2663)
@@ -0,0 +1,119 @@
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;  elementFormDefault=&quot;qualified&quot;  attributeFormDefault=&quot;unqualified&quot; &gt;
+        &lt;xs:element name=&quot;registry&quot; &gt;
+                &lt;xs:complexType&gt;
+                        &lt;xs:sequence&gt;
+                                &lt;!-- The dims element contains all dimensions --&gt;
+                                &lt;xs:element name=&quot;dims&quot; &gt;
+                                        &lt;xs:complexType&gt;
+                                                &lt;xs:sequence&gt;
+                                                        &lt;!-- Each dimension is an independent child of the &lt;dims&gt;&lt;/dims&gt; element. --&gt;
+                                                        &lt;xs:element name=&quot;dim&quot;  maxOccurs=&quot;unbounded&quot; &gt;
+                                                                &lt;xs:complexType&gt;
+                                                                        &lt;!-- The name attribute should specify the name of the dimension. --&gt;
+                                                                        &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The definition attribute is used to define a dimension based on other pre-defined dimensions --&gt;
+                                                                        &lt;xs:attribute name=&quot;definition&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The units attribute defines the units of the dimension. --&gt;
+                                                                        &lt;xs:attribute name=&quot;units&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The description attribute describes the dimensions. --&gt;
+                                                                        &lt;xs:attribute name=&quot;description&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                &lt;/xs:complexType&gt;
+                                                        &lt;/xs:element&gt;
+                                                &lt;/xs:sequence&gt;
+                                        &lt;/xs:complexType&gt;
+                                &lt;/xs:element&gt;
+                                &lt;!-- The nml_record element contains all namelist options for a particular namelist record --&gt;
+                                &lt;xs:element name=&quot;nml_record&quot;  maxOccurs=&quot;unbounded&quot; &gt;
+                                        &lt;xs:complexType&gt;
+                                                &lt;xs:sequence&gt;
+                                                        &lt;!-- The nml_option element defines a particular namelist option that lives within the defined nml_record --&gt;
+                                                        &lt;xs:element name=&quot;nml_option&quot;  maxOccurs=&quot;unbounded&quot; &gt;
+                                                                &lt;xs:complexType&gt;
+                                                                        &lt;!-- The name attribute defines the name of the namelist option. This is how it would look in a namelist file. --&gt;
+                                                                        &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The type attribute defines the type of the particular namelist option. Options are real, integer, character, and logical. --&gt;
+                                                                        &lt;xs:attribute name=&quot;type&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The default_value attribute defines the default value of the namelist option. This is used if the option is omitted from a namelist file. --&gt;
+                                                                        &lt;xs:attribute name=&quot;default_value&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The units attribute defines the units for the particular namelist option. --&gt;
+                                                                        &lt;xs:attribute name=&quot;units&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The description attribute describes the namelist option. --&gt;
+                                                                        &lt;xs:attribute name=&quot;description&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The possible_values attribute defines what values are allowable for the namelist option. --&gt;
+                                                                        &lt;xs:attribute name=&quot;possible_values&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                &lt;/xs:complexType&gt;
+                                                        &lt;/xs:element&gt;
+                                                &lt;/xs:sequence&gt;
+                                                &lt;!-- The name attribute defines the name of the namelist record. This would be seen as &amp;name in the actual namelist. --&gt;
+                                                &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                        &lt;/xs:complexType&gt;
+                                &lt;/xs:element&gt;
+                                &lt;!-- The var_struct element defines a grouping of variables. This is similar to mesh, or state and lives at the domain % blocklist level. --&gt;
+                                &lt;xs:element name=&quot;var_struct&quot;  maxOccurs=&quot;unbounded&quot; &gt;
+                                        &lt;xs:complexType&gt;
+                                                &lt;xs:sequence&gt;
+                                                        &lt;!-- The var_array element defines an array of variables. 
+                                                                 Within the code all constituent variables are merged into a one higher dimension array, for ease of use.
+                                                                 When written to the output file, they will be named their individual names. --&gt;
+                                                        &lt;xs:element name=&quot;var_array&quot; maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; &gt;
+                                                                &lt;xs:complexType&gt;
+                                                                        &lt;xs:sequence&gt;
+                                                                                &lt;!-- This specific var element defines a variable that is a constituent to a particular var_array group. --&gt;
+                                                                                &lt;xs:element name=&quot;var&quot;  maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; &gt;
+                                                                                        &lt;xs:complexType&gt;
+                                                                                                &lt;!-- The name attribute is the name of the variable. This how it will be displayed in the output file. --&gt;
+                                                                                                &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                                                &lt;!-- The array_group attribute is used to group variables within the var_array for ease of use. --&gt;
+                                                                                                &lt;xs:attribute name=&quot;array_group&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                                                &lt;!-- The streams attribute defines the streams this variable is included in. Allowable values are omitted, i, r, o and any combination of i, r, and o. --&gt;
+                                                                                                &lt;xs:attribute name=&quot;streams&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                                                &lt;!-- The name_in_code attribute defines the name of the variable in the code, if it should be different then in the input/output/restart streams. --&gt;
+                                                                                                &lt;xs:attribute name=&quot;name_in_code&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                                                &lt;!-- The units attribute defines the units of the particular variable --&gt;
+                                                                                                &lt;xs:attribute name=&quot;units&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                                                &lt;!-- The description attribute describes the particular variable --&gt;
+                                                                                                &lt;xs:attribute name=&quot;description&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                                        &lt;/xs:complexType&gt;
+                                                                                &lt;/xs:element&gt;
+                                                                        &lt;/xs:sequence&gt;
+                                                                        &lt;!-- The name attribute is the name of the var_array that will be seen in the code. --&gt;
+                                                                        &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The type attribute defines the type of all constituents for the var_array. Valid options are real, integer, logical, and character --&gt;
+                                                                        &lt;xs:attribute name=&quot;type&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The dimensions attribute defines the dimensions of each individual constituent. This does not include the collapsed dimension. --&gt;
+                                                                        &lt;xs:attribute name=&quot;dimensions&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The persistence attribute determines if the var_array is persistence or scratch. Valid options are persistent, and scratch. --&gt;
+                                                                        &lt;xs:attribute name=&quot;persistence&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                &lt;/xs:complexType&gt;
+                                                        &lt;/xs:element&gt;
+                                                        &lt;!-- This var element defines a variable that does not live within a var_array group. --&gt;
+                                                        &lt;xs:element name=&quot;var&quot;  maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; &gt;
+                                                                &lt;xs:complexType&gt;
+                                                                        &lt;!-- The name attribute defines the name in the NetCDF files of this variable. --&gt;
+                                                                        &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The type attribute defines the type within MPAS of the variable. --&gt;
+                                                                        &lt;xs:attribute name=&quot;type&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The dimensions attribute defines the dimensions of the variable. --&gt;
+                                                                        &lt;xs:attribute name=&quot;dimensions&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                                        &lt;!-- The streams attribute defines the streams this variable is included in. --&gt;
+                                                                        &lt;xs:attribute name=&quot;streams&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The name_in_code attribute defines the name of the variable within MPAS (if different from name). --&gt;
+                                                                        &lt;xs:attribute name=&quot;name_in_code&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The units attribute defines the units of the variable. --&gt;
+                                                                        &lt;xs:attribute name=&quot;units&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                        &lt;!-- The description attribute provides a brief description of the variable. --&gt;
+                                                                        &lt;xs:attribute name=&quot;description&quot;  type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
+                                                                &lt;/xs:complexType&gt;
+                                                        &lt;/xs:element&gt;
+                                                &lt;/xs:sequence&gt;
+                                                &lt;!-- The name attribute defines the name of the var_struct. This would be similar to mesh, or state. --&gt;
+                                                &lt;xs:attribute name=&quot;name&quot;  type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
+                                                &lt;!-- The time_levs attribute defines the number of time levels this var_struct contains. --&gt;
+                                                &lt;xs:attribute name=&quot;time_levs&quot;  type=&quot;xs:int&quot; use=&quot;required&quot;/&gt;
+                                        &lt;/xs:complexType&gt;
+                                &lt;/xs:element&gt;
+                        &lt;/xs:sequence&gt;
+                &lt;/xs:complexType&gt;
+        &lt;/xs:element&gt;
+&lt;/xs:schema&gt;

Modified: trunk/mpas/src/registry/gen_inc.c
===================================================================
--- trunk/mpas/src/registry/gen_inc.c        2013-03-22 17:48:50 UTC (rev 2662)
+++ trunk/mpas/src/registry/gen_inc.c        2013-03-22 19:32:26 UTC (rev 2663)
@@ -1161,7 +1161,10 @@
             for(i=1; i&lt;=ntime_levs; i++) 
             {
                                 fortprintf(fd, &quot;         if(associated(next) .and. associated(prev)) then</font>
<font color="red">&quot;);        
-                                fortprintf(fd, &quot;           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, prev = prev %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">&quot;, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name, i, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name);
+//                                fortprintf(fd, &quot;           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, prev = prev %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="blue">&quot;, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name, i, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name);
+                                fortprintf(fd, &quot;           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, &quot;, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name, i);
+                                fortprintf(fd, &quot; prev = prev %% %s %% time_levs(%i) %% %s,&quot;, group_ptr-&gt;name, i, group_ptr-&gt;name);
+                                fortprintf(fd, &quot; next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="black">&quot;, group_ptr-&gt;name, i, group_ptr-&gt;name);
                                 fortprintf(fd, &quot;         else if(associated(next)) then</font>
<font color="black">&quot;);        
                                 fortprintf(fd, &quot;           call mpas_create_%s_links(b %% %s %% time_levs(%i) %% %s, next = next %% %s %% time_levs(%i) %% %s)</font>
<font color="black">&quot;, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name, group_ptr-&gt;name, i, group_ptr-&gt;name);
                                 fortprintf(fd, &quot;         else if(associated(prev)) then</font>
<font color="gray">&quot;);        
@@ -1389,7 +1392,7 @@
 void gen_reads(struct group_list * groups, struct variable * vars, struct dimension * dims)
 {
    struct variable * var_ptr;
-   struct variable_list * var_list_ptr;
+   struct variable_list * var_list_ptr, *var_list_ptr2;
    struct dimension * dim_ptr;
    struct dimension_list * dimlist_ptr, * lastdim;
    struct group_list * group_ptr;
@@ -2119,8 +2122,10 @@
 /*            fortprintf(fd, &quot;         write(0,*) \'adding input field %s\'</font>
<font color="black">&quot;, var_ptr-&gt;super_array); */
             fortprintf(fd, &quot;         call MPAS_streamAddField(input_obj %% io_stream, %s %% %s, nferr)</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
             while (var_list_ptr &amp;&amp; strncmp(super_array, var_list_ptr-&gt;var-&gt;super_array, 1024) == 0) {
+                           var_list_ptr2 = var_list_ptr;
                var_list_ptr = var_list_ptr-&gt;next;
             }
+                        var_list_ptr = var_list_ptr2;
          }
          else {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
@@ -2176,8 +2181,10 @@
 /*                     fortprintf(fd, &quot;         write(0,*) \'exchange halo for %s\'</font>
<font color="black">&quot;, var_ptr-&gt;super_array); */
                      fortprintf(fd, &quot;         call mpas_dmpar_exch_halo_field(%s %% %s)</font>
<font color="blue">&quot;, struct_deref, var_ptr-&gt;super_array);
                      while (var_list_ptr &amp;&amp; strncmp(super_array, var_list_ptr-&gt;var-&gt;super_array, 1024) == 0) {
+                                                var_list_ptr2 = var_list_ptr;
                         var_list_ptr = var_list_ptr-&gt;next;
                      }
+                                         var_list_ptr = var_list_ptr2;
                   }
                   else {
                      fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% input .and. input_obj %% stream == STREAM_INPUT) .or. &amp;</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);
@@ -2383,7 +2390,7 @@
 void gen_writes(struct group_list * groups, struct variable * vars, struct dimension * dims, struct namelist * namelists)
 {
    struct variable * var_ptr;
-   struct variable_list * var_list_ptr;
+   struct variable_list * var_list_ptr, *var_list_ptr2;
    struct dimension * dim_ptr;
    struct dimension_list * dimlist_ptr, * lastdim;
    struct group_list * group_ptr;
@@ -2565,8 +2572,10 @@
             memcpy(super_array, var_ptr-&gt;super_array, 1024);
             fortprintf(fd, &quot;         call MPAS_streamAddField(output_obj %% io_stream, %s %% %s, ierr)</font>
<font color="blue">&quot;, struct_deref, super_array);
             while (var_list_ptr &amp;&amp; strncmp(super_array, var_list_ptr-&gt;var-&gt;super_array, 1024) == 0) {
+                           var_list_ptr2 = var_list_ptr;
                var_list_ptr = var_list_ptr-&gt;next;
             }
+                        var_list_ptr = var_list_ptr2;
          }
          else {
             fortprintf(fd, &quot;      if ((%s %% %s %% ioinfo %% output .and. output_obj %% stream == OUTPUT) .or. &amp;</font>
<font color="gray">&quot;, struct_deref, var_ptr-&gt;name_in_code);

Modified: trunk/mpas/src/registry/parse.c
===================================================================
--- trunk/mpas/src/registry/parse.c        2013-03-22 17:48:50 UTC (rev 2662)
+++ trunk/mpas/src/registry/parse.c        2013-03-22 19:32:26 UTC (rev 2663)
@@ -3,6 +3,7 @@
 #include &lt;string.h&gt;
 #include &quot;registry_types.h&quot;
 #include &quot;gen_inc.h&quot;
+#include &quot;ezxml/ezxml.h&quot;
 
 int parse_reg(FILE *, struct namelist **, struct dimension **, struct variable **, struct group_list **);
 int getword(FILE *, char *);
@@ -30,9 +31,16 @@
    nls = NULL;
    dims = NULL;
    vars = NULL;
+  
+   if (parse_reg_xml(regfile, &amp;nls, &amp;dims, &amp;vars, &amp;groups)) {
+      return 1;
+   }
+  
+/* Old Parser
    if (parse_reg(regfile, &amp;nls, &amp;dims, &amp;vars, &amp;groups)) {
       return 1;
    }
+*/
 
    sort_vars(vars);
    sort_group_vars(groups);
@@ -45,7 +53,391 @@
    return 0;
 }
 
+int parse_reg_xml(FILE * regfile, struct namelist **nls, struct dimension ** dims, struct variable ** vars, struct group_list ** groups)
+{
+        struct namelist * nls_ptr, *nls_ptr2;
+        struct namelist * nls_chk_ptr;
+        struct dimension * dim_ptr, *dim_ptr2;
+        struct variable * var_ptr, *var_ptr2;
+        struct dimension_list * dimlist_ptr;
+        struct dimension * dimlist_cursor;
+        struct group_list * grouplist_ptr;
+        struct variable_list * vlist_cursor;
 
+        ezxml_t registry = ezxml_parse_fp(regfile);
+        ezxml_t dims_xml, dim_xml;
+        ezxml_t structs_xml, var_arr_xml, var_xml;
+        ezxml_t nmlrecs_xml, nmlopt_xml;
+
+        const char *dimname, *dimunits, *dimdesc, *dimdef;
+        const char *nmlrecname, *nmloptname, *nmlopttype, *nmloptval, *nmloptunits, *nmloptdesc, *nmloptposvals;
+        const char *structname, *structlevs;
+        const char *vararrname, *vararrtype, *vararrdims, *vararrpersistence;
+        const char *varname, *varpersistence, *vartype, *vardims, *varunits, *vardesc, *vararrgroup, *varstreams;
+        const char *varname_in_code;
+
+        char dimensions[2048];
+        char *dimension_list;
+        char dimension_buffer[128];
+        char streams_buffer[128];
+
+        NEW_NAMELIST(nls_ptr)
+        NEW_DIMENSION(dim_ptr)
+        NEW_VARIABLE(var_ptr)
+        NEW_GROUP_LIST(grouplist_ptr);
+        *nls = nls_ptr;
+        *dims = dim_ptr;
+        *vars = var_ptr;
+        *groups = grouplist_ptr;
+
+        // Parse Namelist Records
+        for (nmlrecs_xml = ezxml_child(registry, &quot;nml_record&quot;); nmlrecs_xml; nmlrecs_xml = nmlrecs_xml-&gt;next){
+                nmlrecname = ezxml_attr(nmlrecs_xml, &quot;name&quot;);
+                for (nmlopt_xml = ezxml_child(nmlrecs_xml, &quot;nml_option&quot;); nmlopt_xml; nmlopt_xml = nmlopt_xml-&gt;next){
+                        nmloptname = ezxml_attr(nmlopt_xml, &quot;name&quot;);
+                        nmlopttype = ezxml_attr(nmlopt_xml, &quot;type&quot;);
+                        nmloptval = ezxml_attr(nmlopt_xml, &quot;default_value&quot;);
+                        nmloptunits = ezxml_attr(nmlopt_xml, &quot;units&quot;);
+                        nmloptdesc = ezxml_attr(nmlopt_xml, &quot;description&quot;);
+                        nmloptposvals = ezxml_attr(nmlopt_xml, &quot;possible_values&quot;);
+
+                        snprintf(nls_ptr-&gt;record, 1024, &quot;%s&quot;, nmlrecname);
+                        snprintf(nls_ptr-&gt;name, 1024, &quot;%s&quot;, nmloptname);
+
+                        if(strncmp(nmlopttype, &quot;real&quot;, 1024) == 0){
+                                nls_ptr-&gt;vtype = REAL;
+                        } else if(strncmp(nmlopttype, &quot;integer&quot;, 1024) == 0){
+                                nls_ptr-&gt;vtype = INTEGER;
+                        } else if(strncmp(nmlopttype, &quot;logical&quot;, 1024) == 0){
+                                nls_ptr-&gt;vtype = LOGICAL;
+                        } else if(strncmp(nmlopttype, &quot;character&quot;, 1024) == 0){
+                                nls_ptr-&gt;vtype = CHARACTER;
+                        }
+
+                        switch(nls_ptr-&gt;vtype){
+                                case REAL:
+                                        nls_ptr-&gt;defval.rval = (float)atof(nmloptval);
+                                        break;
+                                case INTEGER:
+                                        nls_ptr-&gt;defval.ival = atoi(nmloptval);
+                                        break;
+                                case LOGICAL:
+                                        if(strncmp(nmloptval, &quot;true&quot;, 1024) ==0){
+                                                nls_ptr-&gt;defval.lval = 1;
+                                        } else if (strncmp(nmloptval, &quot;false&quot;, 1024) == 0){
+                                                nls_ptr-&gt;defval.lval = 0;
+                                        }
+                                        break;
+                                case CHARACTER:
+                                        snprintf(nls_ptr-&gt;defval.cval, 32, &quot;%s&quot;, nmloptval);
+                                        break;
+                        }
+
+                        NEW_NAMELIST(nls_ptr-&gt;next)
+                        nls_ptr2 = nls_ptr;
+                        nls_ptr = nls_ptr-&gt;next;
+                }
+        }
+
+        if(nls_ptr2-&gt;next) free(nls_ptr2-&gt;next);
+        nls_ptr2-&gt;next = NULL;
+
+        // Parse Dimensions
+        for (dims_xml = ezxml_child(registry, &quot;dims&quot;); dims_xml; dims_xml = dims_xml-&gt;next){
+                for (dim_xml = ezxml_child(dims_xml, &quot;dim&quot;); dim_xml; dim_xml = dim_xml-&gt;next){
+                        dimname = ezxml_attr(dim_xml, &quot;name&quot;);
+                        dimdef = ezxml_attr(dim_xml, &quot;definition&quot;);        
+                        dimunits = ezxml_attr(dim_xml, &quot;units&quot;);
+                        dimdesc = ezxml_attr(dim_xml, &quot;description&quot;);
+
+                        dim_ptr-&gt;namelist_defined = 0;
+
+                        snprintf(dim_ptr-&gt;name_in_file, 1024, &quot;%s&quot;, dimname);
+                        if(dimdef == NULL){
+                                snprintf(dim_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, dimname);
+                                dim_ptr-&gt;constant_value = -1;
+                        } else {
+                                snprintf(dim_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, dimdef);
+                                // Check namelist defined ??
+                                dim_ptr-&gt;constant_value = is_integer_constant(dim_ptr-&gt;name_in_code);
+                                if(strncmp(dim_ptr-&gt;name_in_code, &quot;namelist:&quot;, 9) == 0) {
+                                        dim_ptr-&gt;namelist_defined = 1;
+                                        snprintf(dim_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, (dim_ptr-&gt;name_in_code)+9);
+
+                                        /* Check that the referenced namelist variable is defined as an integer variable */
+                                        nls_chk_ptr = (*nls)-&gt;next;
+                                        while (nls_chk_ptr) {
+                                                if (strncmp(nls_chk_ptr-&gt;name, dim_ptr-&gt;name_in_code, 1024) == 0) {
+                                                        if (nls_chk_ptr-&gt;vtype != INTEGER) {
+                                                                printf(&quot;</font>
<font color="black">Registry error: Namelist variable %s must be an integer for namelist-derived dimension %s</font>
<font color="black"></font>
<font color="blue">&quot;, nls_chk_ptr-&gt;name, dim_ptr-&gt;name_in_file);
+                                                                return 1;
+                                                        }
+                                                        break;
+                                                } 
+                                                nls_chk_ptr = nls_chk_ptr-&gt;next;
+                                        }
+                                        if (!nls_chk_ptr) {
+                                                printf(&quot;</font>
<font color="black">Registry error: Namelist variable %s not defined for namelist-derived dimension %s</font>
<font color="black"></font>
<font color="blue">&quot;, dim_ptr-&gt;name_in_code, dim_ptr-&gt;name_in_file);
+                                                return 1;
+                                        }
+
+                                }
+                        }
+
+                        NEW_DIMENSION(dim_ptr-&gt;next)
+                        dim_ptr2 = dim_ptr;
+                        dim_ptr = dim_ptr-&gt;next;
+                }   
+        }
+
+        if(dim_ptr2-&gt;next) free(dim_ptr2-&gt;next);
+        dim_ptr2-&gt;next = NULL;
+
+        // Parse Variable Structures
+        for(structs_xml = ezxml_child(registry, &quot;var_struct&quot;); structs_xml; structs_xml = structs_xml-&gt;next){
+                structname = ezxml_attr(structs_xml, &quot;name&quot;);
+                structlevs = ezxml_attr(structs_xml, &quot;time_levs&quot;);
+
+                grouplist_ptr = *groups;
+                while(grouplist_ptr-&gt;next) grouplist_ptr = grouplist_ptr-&gt;next;
+                NEW_GROUP_LIST(grouplist_ptr-&gt;next);
+                grouplist_ptr = grouplist_ptr-&gt;next;
+                snprintf(grouplist_ptr-&gt;name, 1024, &quot;%s&quot;, structname);
+                vlist_cursor = NULL;
+
+                // Parse variable arrays
+                for(var_arr_xml = ezxml_child(structs_xml, &quot;var_array&quot;); var_arr_xml; var_arr_xml = var_arr_xml-&gt;next){
+                        vararrname = ezxml_attr(var_arr_xml, &quot;name&quot;);
+                        vararrtype = ezxml_attr(var_arr_xml, &quot;type&quot;);
+                        vararrdims = ezxml_attr(var_arr_xml, &quot;dimensions&quot;);
+                        vararrpersistence = ezxml_attr(var_arr_xml, &quot;persistence&quot;);
+
+                        //Parse variables in variable arrays
+                        for(var_xml = ezxml_child(var_arr_xml, &quot;var&quot;); var_xml; var_xml = var_xml-&gt;next){
+                                varname = ezxml_attr(var_xml, &quot;name&quot;);
+                                varunits = ezxml_attr(var_xml, &quot;units&quot;);
+                                vardesc = ezxml_attr(var_xml, &quot;description&quot;);
+                                varstreams = ezxml_attr(var_xml, &quot;streams&quot;);
+                                vararrgroup = ezxml_attr(var_xml, &quot;array_group&quot;);
+                                varname_in_code = ezxml_attr(var_xml, &quot;name_in_code&quot;);
+
+                                if(vlist_cursor == NULL){
+                                        NEW_VARIABLE_LIST(grouplist_ptr-&gt;vlist);
+                                        vlist_cursor = grouplist_ptr-&gt;vlist;
+                                } else {
+                                        NEW_VARIABLE_LIST(vlist_cursor-&gt;next);
+                                        vlist_cursor-&gt;next-&gt;prev = vlist_cursor;
+                                        vlist_cursor = vlist_cursor-&gt;next;
+                                }
+                                vlist_cursor-&gt;var = var_ptr;
+                                vlist_cursor-&gt;next = NULL;
+
+                                var_ptr-&gt;ndims = 0;
+                                var_ptr-&gt;timedim = 0;
+                                var_ptr-&gt;iostreams = 0;
+
+                                snprintf(var_ptr-&gt;name_in_file, 1024, &quot;%s&quot;, varname);
+
+                                if(vararrpersistence == NULL){
+                                        var_ptr-&gt;persistence = PERSISTENT;
+                                } else {
+                                        if(strncmp(vararrpersistence, &quot;persistent&quot;, 1024) == 0){
+                                                var_ptr-&gt;persistence = PERSISTENT;
+                                        } else if(strncmp(vararrpersistence, &quot;scratch&quot;, 1024) == 0){
+                                                var_ptr-&gt;persistence = SCRATCH;
+                                        }
+                                }
+
+                                if(strncmp(vararrtype, &quot;real&quot;, 1024) == 0){
+                                        var_ptr-&gt;vtype = REAL;
+                                } else if(strncmp(vararrtype, &quot;integer&quot;, 1024) == 0){
+                                        var_ptr-&gt;vtype = INTEGER;
+                                } else if(strncmp(vararrtype, &quot;logical&quot;, 1024) == 0){
+                                        var_ptr-&gt;vtype = LOGICAL;
+                                } else if(strncmp(vararrtype, &quot;text&quot;, 1024) == 0){
+                                        var_ptr-&gt;vtype = CHARACTER;
+                                }
+
+                                NEW_DIMENSION_LIST(dimlist_ptr)
+                                var_ptr-&gt;dimlist = dimlist_ptr;
+
+                                snprintf(dimensions,2048, &quot;%s&quot;, vararrdims);
+                                dimension_list = strtok(dimensions, &quot; &quot;);
+                                while(dimension_list != NULL){
+                                        snprintf(dimension_buffer, 128, &quot;%s&quot;, dimension_list);
+                                        if(strncmp(dimension_buffer, &quot;Time&quot;, 1024) == 0){
+                                                var_ptr-&gt;timedim = 1;
+                                        } else {
+                                                NEW_DIMENSION_LIST(dimlist_ptr-&gt;next)
+                                                dimlist_ptr-&gt;next-&gt;prev = dimlist_ptr;
+                                                dimlist_ptr = dimlist_ptr-&gt;next;
+
+                                                dimlist_cursor = (*dims);
+                                                while(dimlist_cursor &amp;&amp; (strncmp(dimension_buffer, dimlist_cursor-&gt;name_in_file, 1024) != 0)){
+                                                        dimlist_cursor = dimlist_cursor-&gt;next;
+                                                }
+                                                if (dimlist_cursor) {
+                                                        dimlist_ptr-&gt;dim = dimlist_cursor;
+                                                } else {
+                                                        fprintf(stderr, &quot;Error: Unknown dimension %s for variable %s</font>
<font color="blue">&quot;, dimension_buffer, var_ptr-&gt;name_in_file);
+                                                        return 1;
+                                                }
+                                                var_ptr-&gt;ndims++;
+                                        }
+                                        dimension_list = strtok(NULL, &quot; &quot;);
+                                }
+                                dimlist_ptr = var_ptr-&gt;dimlist;
+                                if(var_ptr-&gt;dimlist) var_ptr-&gt;dimlist = var_ptr-&gt;dimlist-&gt;next;
+                                free(dimlist_ptr);
+
+                                var_ptr-&gt;ntime_levs = atoi(structlevs);
+
+                                if(varstreams != NULL){
+                                        snprintf(streams_buffer, 128, &quot;%s&quot;, varstreams);
+                                        if(strchr(streams_buffer, (int)'i')) var_ptr-&gt;iostreams |= INPUT0;
+                                        if(strchr(streams_buffer, (int)'s')) var_ptr-&gt;iostreams |= SFC0;
+                                        if(strchr(streams_buffer, (int)'r')) var_ptr-&gt;iostreams |= RESTART0;
+                                        if(strchr(streams_buffer, (int)'o')) var_ptr-&gt;iostreams |= OUTPUT0;
+                                }
+
+                                if(varname_in_code == NULL){
+                                        snprintf(var_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, varname);
+                                } else {
+                                        snprintf(var_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, varname_in_code);
+                                }
+
+                                snprintf(var_ptr-&gt;super_array, 1024, &quot;%s&quot;, vararrname);
+                                snprintf(var_ptr-&gt;array_class, 1024, &quot;%s&quot;, vararrgroup);
+
+                                NEW_VARIABLE(var_ptr-&gt;next);
+                                var_ptr2 = var_ptr;
+                                var_ptr = var_ptr-&gt;next;
+                        }
+                }
+
+                for(var_xml = ezxml_child(structs_xml, &quot;var&quot;); var_xml; var_xml = var_xml-&gt;next){
+                        varname = ezxml_attr(var_xml, &quot;name&quot;);
+                        varpersistence = ezxml_attr(var_xml, &quot;persistence&quot;);
+                        vartype = ezxml_attr(var_xml, &quot;type&quot;);
+                        vardims = ezxml_attr(var_xml, &quot;dimensions&quot;);
+                        varunits = ezxml_attr(var_xml, &quot;units&quot;);
+                        vardesc = ezxml_attr(var_xml, &quot;description&quot;);
+                        varstreams = ezxml_attr(var_xml, &quot;streams&quot;);
+                        varname_in_code = ezxml_attr(var_xml, &quot;name_in_code&quot;);
+
+                        if(vlist_cursor == NULL){
+                                NEW_VARIABLE_LIST(grouplist_ptr-&gt;vlist);
+                                vlist_cursor = grouplist_ptr-&gt;vlist;
+                        } else {
+                                NEW_VARIABLE_LIST(vlist_cursor-&gt;next);
+                                vlist_cursor-&gt;next-&gt;prev = vlist_cursor;
+                                vlist_cursor = vlist_cursor-&gt;next;
+                        }
+                        vlist_cursor-&gt;var = var_ptr;
+                        vlist_cursor-&gt;next = NULL;
+
+                        var_ptr-&gt;ndims = 0;
+                        var_ptr-&gt;timedim = 0;
+                        var_ptr-&gt;iostreams = 0;
+
+                        snprintf(var_ptr-&gt;name_in_file, 1024, &quot;%s&quot;, varname);
+
+                        if(varpersistence == NULL){
+                                var_ptr-&gt;persistence = PERSISTENT;
+                        } else {
+                                if(strncmp(varpersistence, &quot;persistent&quot;, 1024) == 0){
+                                        var_ptr-&gt;persistence = PERSISTENT;
+                                } else if(strncmp(varpersistence, &quot;scratch&quot;, 1024) == 0){
+                                        var_ptr-&gt;persistence = SCRATCH;
+                                }
+                        }
+
+                        if(strncmp(vartype, &quot;real&quot;, 1024) == 0){
+                                var_ptr-&gt;vtype = REAL;
+                        } else if(strncmp(vartype, &quot;integer&quot;, 1024) == 0){
+                                var_ptr-&gt;vtype = INTEGER;
+                        } else if(strncmp(vartype, &quot;logical&quot;, 1024) == 0){
+                                var_ptr-&gt;vtype = LOGICAL;
+                        } else if(strncmp(vartype, &quot;text&quot;, 1024) == 0){
+                                var_ptr-&gt;vtype = CHARACTER;
+                        }
+
+                        NEW_DIMENSION_LIST(dimlist_ptr)
+                        var_ptr-&gt;dimlist = dimlist_ptr;
+
+                        snprintf(dimensions, 2048, &quot;%s&quot;, vardims);
+                        dimension_list = strtok(dimensions, &quot; &quot;);
+                        while(dimension_list != NULL){
+                                snprintf(dimension_buffer, 128, &quot;%s&quot;, dimension_list);
+                                if(strncmp(dimension_buffer, &quot;Time&quot;, 1024) == 0){
+                                        var_ptr-&gt;timedim = 1;
+                                } else {
+                                        NEW_DIMENSION_LIST(dimlist_ptr-&gt;next)
+                                        dimlist_ptr-&gt;next-&gt;prev = dimlist_ptr;
+                                        dimlist_ptr = dimlist_ptr-&gt;next;
+
+                                        dimlist_cursor = (*dims);
+                                        while(dimlist_cursor &amp;&amp; (strncmp(dimension_buffer, dimlist_cursor-&gt;name_in_file, 1024) != 0) )
+                                                dimlist_cursor = dimlist_cursor-&gt;next;
+                                        if (dimlist_cursor) {
+                                                dimlist_ptr-&gt;dim = dimlist_cursor;
+                                        } else {
+                                                fprintf(stderr, &quot;Error: Unknown dimension %s for variable %s</font>
<font color="gray">&quot;, dimension_buffer, var_ptr-&gt;name_in_file);
+                                                return 1;
+                                        }
+                                        var_ptr-&gt;ndims++;
+                                }
+                                dimension_list = strtok(NULL, &quot; &quot;);
+                        }
+
+                        dimlist_ptr = var_ptr-&gt;dimlist;
+                        if(var_ptr-&gt;dimlist) var_ptr-&gt;dimlist = var_ptr-&gt;dimlist-&gt;next;
+                        free(dimlist_ptr);
+
+                        var_ptr-&gt;ntime_levs = atoi(structlevs);
+
+                        if(varstreams != NULL){
+                                snprintf(streams_buffer, 128, &quot;%s&quot;, varstreams);
+                                if(strchr(streams_buffer, (int)'i')) {
+                                        var_ptr-&gt;iostreams |= INPUT0;
+                                }
+                                if(strchr(streams_buffer, (int)'s')) {
+                                        var_ptr-&gt;iostreams |= SFC0;
+                                }
+                                if(strchr(streams_buffer, (int)'r')) {
+                                        var_ptr-&gt;iostreams |= RESTART0;
+                                }
+                                if(strchr(streams_buffer, (int)'o')) {
+                                        var_ptr-&gt;iostreams |= OUTPUT0;
+                                }
+                        }
+
+                        if(varname_in_code == NULL){
+                                snprintf(var_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, varname);
+                        } else {
+                                snprintf(var_ptr-&gt;name_in_code, 1024, &quot;%s&quot;, varname_in_code);
+                        }
+
+                        snprintf(var_ptr-&gt;super_array, 1024, &quot;-&quot;);
+                        snprintf(var_ptr-&gt;array_class, 1024, &quot;-&quot;);
+
+                        NEW_VARIABLE(var_ptr-&gt;next);
+                        var_ptr2 = var_ptr;
+                        var_ptr = var_ptr-&gt;next;
+                }
+        }
+
+        if(var_ptr2-&gt;next) free(var_ptr2-&gt;next);
+        var_ptr2-&gt;next = NULL;
+
+        grouplist_ptr = *groups;
+        if ((*groups)-&gt;next) *groups = (*groups)-&gt;next;
+        if (grouplist_ptr) free(grouplist_ptr);
+
+        return 0;
+}
+
+
 int parse_reg(FILE * regfile, struct namelist ** nls, struct dimension ** dims, struct variable ** vars, struct group_list ** groups)
 {
    char word[1024];
@@ -228,7 +620,6 @@
             vlist_cursor-&gt;var = var_ptr;
          }
 
-
          getword(regfile, var_ptr-&gt;super_array);
          getword(regfile, var_ptr-&gt;array_class);
 
@@ -402,7 +793,7 @@
          memcpy(super_array, var_ptr-&gt;var-&gt;super_array, 1024);
          var_ptr2_prev = var_ptr;
          var_ptr2 = var_ptr-&gt;next;
-         if (var_ptr2 &amp;&amp; strncmp(super_array, var_ptr2-&gt;var-&gt;super_array, 1024) != 0) {
+         if (var_ptr2 != NULL &amp;&amp; strncmp(super_array, var_ptr2-&gt;var-&gt;super_array, 1024) != 0) {
             while (var_ptr2) {
                if (strncmp(super_array, var_ptr2-&gt;var-&gt;super_array, 1024) == 0) {
                   var_ptr2_prev-&gt;next = var_ptr2-&gt;next;

</font>
</pre>