Line data Source code
1 : !! This module handles reading the namelist and provides access to some other flags
2 : !! that control a specific CARMA model's behavior.
3 : !!
4 : !! By default the specific CARMA model does not have any unique namelist values. If
5 : !! a CARMA model wishes to have its own namelist, then this file needs to be copied
6 : !! from physics/cam to physics/model/<model_name> and the code needed to read in the
7 : !! namelist values added there. This file will take the place of the one in
8 : !! physics/cam.
9 : !!
10 : !! It needs to be in its own file to resolve some circular dependencies.
11 : !!
12 : !! @author Chuck Bardeen
13 : !! @version Mar-2011
14 : module carma_model_flags_mod
15 :
16 : use shr_kind_mod, only: r8 => shr_kind_r8
17 : use spmd_utils, only: masterproc
18 :
19 : ! Flags for integration with CAM Microphysics
20 : public carma_model_readnl ! read the carma model namelist
21 :
22 :
23 : ! Namelist flags
24 : !
25 : ! Create a public definition of any new namelist variables that you wish to have,
26 : ! and default them to an inital value.
27 : logical, public :: carma_flag = .false. ! If .true. then turn on CARMA microphysics in CAM
28 : real(r8), public :: carma_vf_const = 0.0_r8 ! If specified and non-zero, constant fall velocity for all particles [cm/s]
29 : character(len=256), public :: carma_reftfile = 'carma_reft.nc' ! path to the file containing the reference temperature profile
30 :
31 : contains
32 :
33 :
34 : !! Read the CARMA model runtime options from the namelist
35 : !!
36 : !! @author Chuck Bardeen
37 : !! @version Mar-2011
38 1536 : subroutine carma_model_readnl(nlfile)
39 :
40 : ! Read carma namelist group.
41 :
42 : use cam_abortutils, only: endrun
43 : use namelist_utils, only: find_group_name
44 : use units, only: getunit, freeunit
45 : use mpishorthand
46 :
47 : ! args
48 :
49 : character(len=*), intent(in) :: nlfile ! filepath for file containing namelist input
50 :
51 : ! local vars
52 :
53 : integer :: unitn, ierr
54 :
55 : ! read namelist for CARMA
56 : ! namelist /carma_model_nl/ &
57 : ! carma_flag, &
58 : ! carma_maxretries, &
59 : ! carma_conmax, &
60 : ! carma_reftfile
61 :
62 : ! if (masterproc) then
63 : ! unitn = getunit()
64 : ! open( unitn, file=trim(nlfile), status='old' )
65 : ! call find_group_name(unitn, 'carma_model_nl', status=ierr)
66 : ! if (ierr == 0) then
67 : ! read(unitn, carma_model_nl, iostat=ierr)
68 : ! if (ierr /= 0) then
69 : ! call endrun('carma_model_readnl: ERROR reading namelist')
70 : ! end if
71 : ! end if
72 : ! close(unitn)
73 : ! call freeunit(unitn)
74 : ! end if
75 :
76 : #ifdef SPMD
77 : ! call mpibcast (carma_flag, 1 ,mpilog, 0,mpicom)
78 : ! call mpibcast (carma_maxretries, 1 ,mpiint, 0,mpicom)
79 : ! call mpibcast (carma_conmax, 1 ,mpir8, 0,mpicom)
80 : ! call mpibcast (carma_reftfile, len(carma_reftfile), mpichar, 0, mpicom)
81 : #endif
82 :
83 1536 : end subroutine carma_model_readnl
84 :
85 : end module carma_model_flags_mod
|