[Dart-dev] DART/branches Revision: 12231

dart at ucar.edu dart at ucar.edu
Wed Dec 20 16:53:12 MST 2017


thoar at ucar.edu
2017-12-20 16:53:12 -0700 (Wed, 20 Dec 2017)
193
The datasets required to test the model_mod_check program are in:
/glade/p/image/DART_test_cases/test_build_datasets.tar

Untar that from the base DART directory and you should be good to go.




Modified: DART/branches/mmc/assimilation_code/modules/io/state_structure_mod.f90
===================================================================
--- DART/branches/mmc/assimilation_code/modules/io/state_structure_mod.f90	2017-12-20 23:53:08 UTC (rev 12230)
+++ DART/branches/mmc/assimilation_code/modules/io/state_structure_mod.f90	2017-12-20 23:53:12 UTC (rev 12231)
@@ -223,6 +223,7 @@
    integer :: num_unique_dims
    character(len=NF90_MAX_NAME), allocatable :: unique_dim_names(:)
    integer,                      allocatable :: unique_dim_length(:)
+   integer,                      allocatable :: unique_dim_IDs(:)
    integer :: unlimDimId = -1 ! initialize to no unlimited dimension
    logical :: has_unlimited = .false.
 
@@ -404,7 +405,6 @@
 !-------------------------------------------------------------------------------
 !> Add a blank domain - one variable called state, length = domain_size
 
-
 function add_domain_blank(domain_size) result(dom_id)
 
 integer(i8), intent(in) :: domain_size
@@ -418,14 +418,38 @@
 state%num_domains = state%num_domains + 1
 dom_id = state%num_domains
 
+if (state%num_domains > 1 ) then
+   domain_offset = get_index_end(dom_id-1,get_num_variables(dom_id-1))
+else
+   domain_offset = 0
+endif
+
 ! domain
 state%domain(dom_id)%method        = 'blank'
 state%domain(dom_id)%num_variables = 1
 state%domain(dom_id)%dom_size      = domain_size
-state%model_size = state%model_size + domain_size
+state%model_size                   = state%model_size + domain_size
 
+state%domain(dom_id)%num_unique_dims = 3
+allocate(state%domain(dom_id)%unique_dim_IDs(3))
+allocate(state%domain(dom_id)%unique_dim_names(3))
+allocate(state%domain(dom_id)%unique_dim_length(3))
+
+state%domain(dom_id)%unique_dim_names(1)  = 'location'
+state%domain(dom_id)%unique_dim_names(2)  = 'member'
+state%domain(dom_id)%unique_dim_names(3)  = 'time'
+
+state%domain(dom_id)%unique_dim_length(1) =  domain_size
+state%domain(dom_id)%unique_dim_length(2) =  1
+state%domain(dom_id)%unique_dim_length(3) =  1
+
+state%domain(dom_id)%unique_dim_IDs(1)    =  1
+state%domain(dom_id)%unique_dim_IDs(2)    =  2
+state%domain(dom_id)%unique_dim_IDs(3)    =  NF90_UNLIMITED
+
 ! variable
 allocate(state%domain(dom_id)%variable(1))
+
 state%domain(dom_id)%variable(1)%varname            = 'state'
 state%domain(dom_id)%variable(1)%io_info%units      = 'none'
 state%domain(dom_id)%variable(1)%numdims            = 1
@@ -432,17 +456,14 @@
 state%domain(dom_id)%variable(1)%io_info%io_numdims = 3
 state%domain(dom_id)%variable(1)%var_size           = domain_size
 
-domain_offset = 0
-if (state%num_domains > 1 ) domain_offset = get_index_end(dom_id-1,get_num_variables(dom_id-1))
 state%domain(dom_id)%variable(1)%index_start = domain_offset + 1
 state%domain(dom_id)%variable(1)%index_end   = domain_offset + domain_size
-!>@todo FIXME : should this be raw state variable or -1?, optional argument
-!>              for kind??
+
+!>@todo FIXME : what is a good default for kind_string
 state%domain(dom_id)%variable(1)%kind_string = 'QTY_STATE_VARIABLE'
 state%domain(dom_id)%variable(1)%dart_kind   = &
        get_index_for_quantity(state%domain(dom_id)%variable(1)%kind_string)
 
-! dimension
 state%domain(dom_id)%variable(1)%dimname(1) = 'location'
 state%domain(dom_id)%variable(1)%dimname(2) = 'member'
 state%domain(dom_id)%variable(1)%dimname(3) = 'time'
@@ -451,19 +472,6 @@
 state%domain(dom_id)%variable(1)%dimlens(2) =  1
 state%domain(dom_id)%variable(1)%dimlens(3) =  1
 
-! load up the domain unique dimension info
-state%domain(dom_id)%num_unique_dims = 3
-allocate(state%domain(dom_id)%unique_dim_names(3))
-allocate(state%domain(dom_id)%unique_dim_length(3))
-
-state%domain(dom_id)%unique_dim_names(1)  = 'location'
-state%domain(dom_id)%unique_dim_names(2)  = 'member'
-state%domain(dom_id)%unique_dim_names(3)  = 'time'
-
-state%domain(dom_id)%unique_dim_length(1) =  domain_size
-state%domain(dom_id)%unique_dim_length(2) =  1
-state%domain(dom_id)%unique_dim_length(3) =  1
-
 state%domain(dom_id)%variable(1)%io_info%io_dimids(1) = 1
 state%domain(dom_id)%variable(1)%io_info%io_dimids(2) = 2
 state%domain(dom_id)%variable(1)%io_info%io_dimids(3) = NF90_UNLIMITED
@@ -692,13 +700,15 @@


More information about the Dart-dev mailing list