INTERFACE / PUBLIC COMPONENTS / FILES / REFERENCES / ERRORS / BUGS / PLANS /

MODULE obs_model_mod

Contact: Jeff Anderson
Reviewers:  
Revision: $Revision: 1.5 $
Release Name: $Name: pre_iceland $
Change Date: $Date: 2005/09/12 22:04:20 $
Change history: see CVS log

OVERVIEW

This is the highest level in DART where a module has access to details of both the assim_model structure and the observation structure. Operations like the evaluation of forward operators that require a knowledge of both the observations and the model details are computed here.




OTHER MODULES USED

types_mod
utilities_mod
location_mod (depends on model choice)
assim_model_mod
obs_sequence_mod
obs_def_mod
time_manager_mod
ensemble_manager_mod



PUBLIC INTERFACE

use obs_model_mod, only : get_close_states
 move_ahead

NOTES




PUBLIC COMPONENTS



call get_close_states(seq, key, radius, numinds, indices, dist, x)
 type(obs_sequence_type), intent(in) :: seq
 integer, intent(in)                 :: key
 real(r8), intent(in)                :: radius
 integer, intent(out)                :: numinds
 integer, dimension(:), intent(out)  :: indices
 real(r8), dimension(:), intent(out) :: dist
 real(r8), dimension(:), intent(in)  :: x
 

Description

Given an observation from an observation sequence, find the number of state variables that are within distance 'radius' of the observation location. Return the indices of the close states and the distances between each and the observation. The model state vector is, unfortunately, needed to compute locations of model state variables in many complex models.

seq    An observation sequence
key    Integer key identifying an observation in the sequence
radius    Find close states within this radius
numinds    Number of close states found
indices    Indices of the close state variables
dist    The distance between each close state and the observation
x    The model state vector, needed to compute distance in some models


call move_ahead(ens_handle, ens_size, model_size, seq, last_key_used, key_bounds, num_obs_in_set, async, adv_ens_command)
 type(ensemble_type),     intent(in)  :: ens_handle
 integer,                 intent(in)  :: ens_size
 integer,                 intent(in)  :: model_size
 type(obs_sequence_type), intent(in)  :: seq
 integer,                 intent(in)  :: last_key_used
 integer, dimension(2),   intent(out) :: key_bounds
 integer,                 intent(out) :: num_obs_in_set
 integer,                 intent(in)  :: async
 character(len=129),      intent(in)  :: adv_ens_command
 

Description

Given an observation sequence and an ensemble, determines how to advance the model so that the next set of observations can be assimilated. Also returns the first and last keys and the number of observations to be assimilated at this time. The algorithm implemented here (one might want to have other variants) first finds the time of the next observation that has not been assimilated at a previous time. It also determines the time of the ensemble state vectors. It then uses information about the model's time stepping capabilities to determine the time to which the model can be advanced that is CLOSEST to the time of the next observation. For now, this algorithm assumes that the model's timestep is a constant. A window of width equal to the model timestep is centered around the closest model time to the next observation and all observations in this window are added to the set to be assimilated.

ens_handle    Identifies the model state ensemble
ens_size    Number of ensemble members
model_size    Size of model state vector
seq    An observation sequence
last_key_used    Identifies the last observation from the sequence that has been used
key_bounds    Returned lower and upper bound on observations to be used at this time
num_obs_in_set    Number of observations to be used at this time
async    Controls how model is advanced (see filter)
adv_ens_command    Command issued by shell for async option 2 (see filter)




FILES




REFERENCES


ERROR CODES and CONDITIONS

RoutineMessageComment
move_ahead next obs time not in model time window Error in algorithm to compute observation window



KNOWN BUGS




FUTURE PLANS