[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