Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / phys / module_cam_mp_modal_aero_initialize_data_phys.F
blobfeb67da1bee8e3ea289d2f9f199182363acce683
1 module modal_aero_initialize_data_phys
2   
3   !This module is created so that WRF Microphysics can be run without using WRFCHEM-Balwinder.Singh@pnnl.gov
4   
5   
6   private
7   public :: modal_aero_initialize_phys
8   
9 contains
10   
11   
12   !==============================================================
13   subroutine modal_aero_initialize_phys
14     use modal_aero_data
15     implicit none
16     
17     !--------------------------------------------------------------
18     ! ... local variables
19     !--------------------------------------------------------------
20 ! pjj/cray - correct type
21 !   real n, pi, tmpsg(ntot_amode)
22     real pi, tmpsg(ntot_amode)
23     integer :: n
24     
25     pi = 4.*atan(1._r8)
26     
27     !
28     ! initialize needed variables in module modal_aero_data
29     !
30     
31     modeptr_accum  = 1
32     modeptr_aitken = 2
33     modeptr_coarse = 3
34     
35     ! setting portions of these arrays that should not be used
36     ! to -999888777 should cause a seg-fault if they get use
37     nspec_amode(:) = -999888777
38     lspectype_amode(:,:) = -999888777
39     lmassptr_amode(:,:) = -999888777
40     numptr_amode(:) = -999888777
41     lptr_dust_a_amode(:) = -999888777
42     lptr_nacl_a_amode(:) = -999888777
43     
44     n = modeptr_accum
45     nspec_amode(n) = 1
46     lspectype_amode(1,n) = 1  ! sulfate
47     lmassptr_amode(1,n) = 6   ! species 6 in state%q
48     numptr_amode(n) = 7   ! species 7 in state%q
49     
50     n = modeptr_aitken
51     nspec_amode(n) = 1
52     lspectype_amode(1,n) = 1  ! sulfate
53     lmassptr_amode(1,n) = 8   ! species 8 in state%q
54     numptr_amode(n) = 9   ! species 9 in state%q
55     
56     n = modeptr_coarse
57     nspec_amode(n) = 2
58     lspectype_amode(1,n) = 2  ! dust
59     lspectype_amode(2,n) = 3  ! seasalt
60     lmassptr_amode(1,n) = 10  ! species 10 in state%q
61     lmassptr_amode(2,n) = 11  ! species 11 in state%q
62     numptr_amode(n) = 12  ! species 12 in state%q
63     lptr_dust_a_amode(n) = lmassptr_amode(1,n)
64     lptr_nacl_a_amode(n) = lmassptr_amode(2,n)
65     
66     lmassptrcw_amode = lmassptr_amode
67     numptrcw_amode = numptr_amode
68     
69     msectional = 0
70     alnsg_amode(:) = log( sigmag_amode(:) )
71     tmpsg = exp( 4.5 * (alnsg_amode(:)**2) )
72     
73     voltonumb_amode(  :) = 1.0/( (pi/6.0) * (dgnum_amode(  :)**3) * tmpsg )
74     voltonumblo_amode(:) = 1.0/( (pi/6.0) * (dgnumlo_amode(:)**3) * tmpsg )
75     voltonumbhi_amode(:) = 1.0/( (pi/6.0) * (dgnumhi_amode(:)**3) * tmpsg )
76     
77     specdens_amode(:) = 1.0e3   ! match precribe_aerosol_mixactivate, but units change
78     specmw_amode(:) = 132.0     ! match precribe_aerosol_mixactivate
79     spechygro(:) = 0.5          ! match precribe_aerosol_mixactivate
82     !For assisting decoupled microphysics (MP) CAM MAM simulations (simulations, where MAM package is coupled with 
83     !radiation but decoupled with MP - i.e. MP runs with 'prescribed' aerosols) following variables are defined.
84     !Following variablesn will only be used in the CAMMGMP driver and its supporting modules (ndrop and microp_aero)
86     cnst_name_cw_mp(:)       = cnst_name_cw(:)
87     
88     msectional_mp            = msectional 
89     modeptr_accum_mp         = modeptr_accum    
90     modeptr_coarse_mp        = modeptr_coarse   
91     modeptr_aitken_mp        = modeptr_aitken   
92     ntot_amode_mp            = ntot_amode 
93     
94     numptrcw_amode_mp(:)     = numptrcw_amode(:) 
95     lptr_dust_a_amode_mp(:)  = lptr_dust_a_amode(:)
96     lptr_nacl_a_amode_mp(:)  = lptr_nacl_a_amode(:)
97     numptr_amode_mp(:)       = numptr_amode(:)  
98     
99     nspec_amode_mp(:)        = nspec_amode(:)  
100     
101     
102     lmassptr_amode_mp(:,:)   = lmassptr_amode(:,:) 
103     lspectype_amode_mp(:,:)  = lspectype_amode(:,:) 
104     lmassptrcw_amode_mp(:,:) = lmassptrcw_amode(:,:)
105     
106     voltonumb_amode_mp(:)    = voltonumb_amode(:)
107     alnsg_amode_mp(:)        = alnsg_amode(:)
108     voltonumbhi_amode_mp(:)  = voltonumbhi_amode(:)
109     voltonumblo_amode_mp(:)  = voltonumblo_amode(:)
110     sigmag_amode_mp(:)       = sigmag_amode(:)
111     dgnum_amode_mp(:)        = dgnum_amode(:)
112     dgnumlo_amode_mp(:)      = dgnumlo_amode(:)
113     dgnumhi_amode_mp(:)      = dgnumhi_amode(:) 
114     specdens_amode_mp(:)     = specdens_amode(:)
115     specmw_amode_mp(:)       = specmw_amode(:)  
116     spechygro_mp(:)          = spechygro(:)
117     
118     
119     return
120   end subroutine modal_aero_initialize_phys
121   
122   !==============================================================
123 end module modal_aero_initialize_data_phys