EMPIRE DA  v1.9.1
Data assimilation codes using EMPIRE communication
 All Classes Files Functions Variables Pages
model_as_subroutine_return.f90
Go to the documentation of this file.
1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2 ! a subroutine to initialise and return the state from the model
3 !
4 !The MIT License (MIT)
5 !
6 !Copyright (c) 2016 Philip A. Browne
7 !
8 !Permission is hereby granted, free of charge, to any person obtaining a copy
9 !of this software and associated documentation files (the "Software"), to deal
10 !in the Software without restriction, including without limitation the rights
11 !to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 !copies of the Software, and to permit persons to whom the Software is
13 !furnished to do so, subject to the following conditions:
14 !
15 !The above copyright notice and this permission notice shall be included in all
16 !copies or substantial portions of the Software.
17 !
18 !THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 !IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 !FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 !AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 !LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 !OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 !SOFTWARE.
25 !
26 !Email: p.browne@reading.ac.uk
27 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28 
30 subroutine model_as_subroutine_return(x,particle)
32  use sizes
33  use comms, only : pfrank,nens,npfs
34  implicit none
35  real(kind=kind(1.0d0)), dimension(state_dim), intent(out) :: x
36  integer, intent(in) :: particle
37  integer :: i
38 
39  if(.not. initialised) then
40  !allocate the space for the data
41  first_ptcl = ceiling(real(pfrank)*real(nens)/real(npfs))
42  final_ptcl = ceiling(real(pfrank+1)*real(nens)/real(npfs))-1
43  print*,'first_ptcl = ',first_ptcl
44  print*,'final_ptcl = ',final_ptcl
45  allocate(model_states(state_dim,first_ptcl:final_ptcl))
46  do i = first_ptcl,final_ptcl
47  call model_as_subroutine_initialise(model_states(:,i),i)
48  end do
49  initialised=.true.
50  end if
51  !now return the appropriate model state
52  x = model_states(:,particle)
53 
54 end subroutine model_as_subroutine_return
a module that can be used to store the data for when the model is a subroutine of empire...
Module containing EMPIRE coupling data.
Definition: comms.f90:57
Module that stores the dimension of observation and state spaces.
Definition: sizes.f90:29
subroutine model_as_subroutine_initialise(x, particle)
subroutine to initialise an ensemble member when the model is a suboutine of EMPIRE, i.e. when using comms_version = 4
subroutine model_as_subroutine_return(x, particle)
subroutine to initialise and return the state from the model