[Dart-dev] DART/branches Revision: 12169

dart at ucar.edu dart at ucar.edu
Sat Dec 2 14:40:16 MST 2017


nancy at ucar.edu
2017-12-02 14:40:16 -0700 (Sat, 02 Dec 2017)
401
a bunch of small changes: build multiple pressure columns
in a single routine; routines to build pressure columns
at midpoints and interface layers.  more structure to
support building height columns.  routine to return surface
elevation at a grid point needs to know whether that grid point
is staggered or not.  untested so i didn't just replace the
existing model_mod - needs a code review first.




Added: DART/branches/recam/models/cam-fv/model_mod.proposed.f90
===================================================================
--- DART/branches/recam/models/cam-fv/model_mod.proposed.f90	                        (rev 0)
+++ DART/branches/recam/models/cam-fv/model_mod.proposed.f90	2017-12-02 21:40:16 UTC (rev 12169)
@@ -0,0 +1,2814 @@
+! DART software - Copyright UCAR. This open source software is provided
+! by ucar, "as is", without charge, subject to all terms of use at
+! http://www.image.ucar.edu/dares/dart/dart_download
+!
+! $Id$
+!----------------------------------------------------------------
+!>
+!> this is the interface between the cam-fv atmosphere model and dart.
+!> the required public interfaces and arguments cannot be changed.
+!>
+!----------------------------------------------------------------
+
+module model_mod
+
+!>@todo fixme fill in the actual names we use after we've gotten
+!>further into writing the coded
+
+use             types_mod, only : MISSING_R8, MISSING_I, i8, r8, vtablenamelength, &
+                                  gravity  
+use      time_manager_mod, only : set_time, time_type, set_date, &
+                                  set_calendar_type, get_date
+use          location_mod, only : location_type, set_vertical, set_location, &
+                                  get_location,get_close_obs, get_close_state, & 
+                                  VERTISUNDEF, VERTISSURFACE, VERTISLEVEL, &
+                                  VERTISPRESSURE, VERTISHEIGHT, &
+                                  VERTISSCALEHEIGHT, query_location
+use         utilities_mod, only : find_namelist_in_file, check_namelist_read, &
+                                  string_to_logical, string_to_real,& 
+                                  logfileunit, do_nml_file, do_nml_term, &
+                                  register_module, error_handler, &
+                                  file_exist, to_upper, E_ERR, E_MSG
+use          obs_kind_mod, only : QTY_SURFACE_ELEVATION, QTY_PRESSURE, &
+                                  QTY_GEOMETRIC_HEIGHT, QTY_VERTLEVEL, &
+                                  QTY_SURFACE_PRESSURE, &
+                                  QTY_TEMPERATURE, QTY_SPECIFIC_HUMIDITY, &
+                                  get_index_for_quantity, get_num_quantities
+!#! use     mpi_utilities_mod
+!#! use        random_seq_mod
+use  ensemble_manager_mod,  only : ensemble_type
+use distributed_state_mod,  only : get_state
+use   state_structure_mod,  only : add_domain, get_dart_vector_index, get_domain_size, &
+                                   get_dim_name, get_kind_index, get_num_dims, &
+                                   get_num_variables, get_varid_from_kind, &
+                                   get_model_variable_indices, state_structure_info
+use  netcdf_utilities_mod,  only : nc_get_variable, nc_get_variable_size, &
+                                   nc_add_attribute_to_variable, &
+                                   nc_define_integer_variable, &
+                                   nc_define_real_variable, &
+                                   nc_add_global_creation_time, &
+                                   nc_add_global_attribute, &
+                                   nc_define_dimension, nc_put_variable, &
+                                   nc_sync, nc_enddef, nc_redef, nc_open_readonly, &
+                                   nc_close, nc_variable_exists
+!#!use       location_io_mod
+use        quad_utils_mod,  only : quad_interp_handle, init_quad_interp, &
+                                   set_quad_coords, &! finalize_quad_interp, &
+                                   !>@todo FIXME need to call finalize_quad_interp
+                                   quad_lon_lat_locate, quad_lon_lat_evaluate, &
+                                   GRID_QUAD_IRREG_SPACED_REGULAR,  &
+                                   QUAD_LOCATED_CELL_CENTERS
+use     default_model_mod,  only : adv_1step, init_time, init_conditions, &
+                                   nc_write_model_vars, pert_model_copies
+
+implicit none
+private
+
+! these routines must be public and you cannot change
+! the arguments - they will be called *from* the dart code.
+
+! routines in this list have code in this module
+public :: static_init_model,                   &
+          get_model_size,                      &
+          get_state_meta_data,                 &
+          model_interpolate,                   & ! big todo
+          shortest_time_between_assimilations, &
+          nc_write_model_atts,                 &
+          write_model_time,                    & ! todo
+          read_model_time,                     &
+          end_model
+
+! code for these routines are in other modules
+public :: nc_write_model_vars,           &
+          pert_model_copies,             & ! todo
+          adv_1step,                     &
+          init_time,                     &
+          init_conditions,               & 
+          convert_vertical_obs,          & ! todo
+          convert_vertical_state,        & ! doing
+          get_close_obs,                 & ! todo
+          get_close_state                  ! todo
+
+! version controlled file description for error handling, do not edit
+character(len=256), parameter :: source   = &
+   "$URL$"
+character(len=32 ), parameter :: revision = "$Revision$"
+character(len=128), parameter :: revdate  = "$Date$"


More information about the Dart-dev mailing list