FV3 Bundle
fv3jedi_increment_utils_mod.F90
Go to the documentation of this file.
1 ! (C) Copyright 2018 UCAR
2 !
3 ! This software is licensed under the terms of the Apache Licence Version 2.0
4 ! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5 
6 !> Utilities for increment for the FV3JEDI model
7 
9 
12 
13 implicit none
14 private
16 
17 !> Fortran derived type to hold FV3JEDI increment
19 
20  type(fv3jedi_vars) :: vars
21 
22  !Local copies of grid
23  integer :: isc, iec, jsc, jec
24  integer :: isd, ied, jsd, jed
25  integer :: npx, npy, npz
26  logical :: hydrostatic = .false.
27  integer :: calendar_type
28  integer, dimension(6) :: date
29  integer, dimension(6) :: date_init
30 
31  !Note: for simplicity in transforming variables the increment is A-Grid winds.
32  !This means all variables are co-located at cell centers.
33 
34  !Increment variables
35  real(kind=kind_real), allocatable, dimension(:,:,:) :: ua ! A-grid zonal wind (m/s)
36  real(kind=kind_real), allocatable, dimension(:,:,:) :: va ! A-grid meridional wind (m/s)
37  real(kind=kind_real), allocatable, dimension(:,:,:) :: t ! dry temperature (K)
38  real(kind=kind_real), allocatable, dimension(:,: ) :: ps ! surface pressure (Pa)
39  real(kind=kind_real), allocatable, dimension(:,:,:) :: q ! specific humidity (kg/kg)
40  real(kind=kind_real), allocatable, dimension(:,:,:) :: qi ! cloud liquid ice (kg/kg)
41  real(kind=kind_real), allocatable, dimension(:,:,:) :: ql ! cloud liquid water (kg/kg)
42  real(kind=kind_real), allocatable, dimension(:,:,:) :: o3 ! ozone (kg/kg)
43 
44  !Nonhydrostatic increment (not using for now)
45  real(kind=kind_real), allocatable, dimension(:,:,:) :: w ! cell center vertical wind (m/s)
46  real(kind=kind_real), allocatable, dimension(:,:,:) :: delz ! layer thickness (meters)
47  real(kind=kind_real), allocatable, dimension(:,:,:) :: delp ! pressure thickness (Pa)
48 
49  !Control variables (used for the B-Matrix/Jb)
50  real(kind=kind_real), allocatable, dimension(:,:,:) :: psi ! Stream function
51  real(kind=kind_real), allocatable, dimension(:,:,:) :: chi ! Velocity potential
52  real(kind=kind_real), allocatable, dimension(:,:,:) :: tv ! Virtual temperature
53  real(kind=kind_real), allocatable, dimension(:,:,:) :: qc ! humidity control variable
54  real(kind=kind_real), allocatable, dimension(:,:,:) :: qic ! cloud liquid ice control variable
55  real(kind=kind_real), allocatable, dimension(:,:,:) :: qlc ! cloud liquid water control variable
56  real(kind=kind_real), allocatable, dimension(:,:,:) :: o3c ! ozone control variable
57 
58 end type fv3jedi_increment
59 
60 ! ------------------------------------------------------------------------------
61 
62 #define LISTED_TYPE fv3jedi_increment
63 
64 !> Linked list interface - defines registry_t type
65 #include "linkedList_i.f"
66 
67 !> Global registry
68 type(registry_t) :: fv3jedi_increment_registry
69 
70 ! ------------------------------------------------------------------------------
71 
72 contains
73 
74 ! ------------------------------------------------------------------------------
75 
76 !> Linked list implementation
77 #include "linkedList_c.f"
78 
79 ! ------------------------------------------------------------------------------
80 
Fortran derived type to hold FV3JEDI increment.
type(registry_t), public fv3jedi_increment_registry
Linked list interface - defines registry_t type.
Fortran module to handle variables for the FV3JEDI model.
Utilities for increment for the FV3JEDI model.
Fortran derived type to represent fv3jedi model variables.