forked from ESCOMP/atmospheric_physics
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhetfrz_classnuc_stub.F90
More file actions
56 lines (45 loc) · 2.16 KB
/
Copy pathhetfrz_classnuc_stub.F90
File metadata and controls
56 lines (45 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
! Stub for heterogeneous freezing by classical nucleation theory (hetfrz_classnuc).
!
! This scheme exists to read the use_hetfrz_classnuc namelist flag and expose it
! via its CCPP standard name so downstream schemes (e.g. nucleate_ice_ccpp,
! eventually PUMAS) can see the flag. It performs no heterogeneous-freezing
! computation -- the real hetfrz_classnuc_ccpp is not yet ported to CAM-SIMA.
!
! Safe to use with use_hetfrz_classnuc=.true. for snapshot-testing flows where
! the flag must propagate downstream; a warning is printed at init time.
module hetfrz_classnuc_stub
use ccpp_kinds, only: kind_phys
implicit none
private
public :: hetfrz_classnuc_stub_init
contains
!> \section arg_table_hetfrz_classnuc_stub_init Argument Table
!! \htmlinclude hetfrz_classnuc_stub_init.html
subroutine hetfrz_classnuc_stub_init( &
amIRoot, iulog, &
use_hetfrz_classnuc, &
errmsg, errflg)
logical, intent(in) :: amIRoot
integer, intent(in) :: iulog
logical, intent(in) :: use_hetfrz_classnuc
character(len=*), intent(out) :: errmsg
integer, intent(out) :: errflg
errmsg = ''
errflg = 0
if (amIRoot) then
if (use_hetfrz_classnuc) then
write(iulog, '(A)') 'WARNING: hetfrz_classnuc_stub: use_hetfrz_classnuc=.true., but ' // &
'heterogeneous freezing by classical nucleation theory is not yet ' // &
'implemented in CAM-SIMA (stub scheme).'
write(iulog, '(A)') 'WARNING: hetfrz_classnuc_stub: The flag is still propagated to ' // &
'downstream schemes (e.g. nucleate_ice_ccpp) via its CCPP standard ' // &
'name, but no hetfrz_classnuc computation will occur.'
! this is not intended to error out for now as the flag needs to be passed to downstream schemes
! (e.g., PUMAS) and modifies their behavior
else
write(iulog, '(A)') 'hetfrz_classnuc_stub: use_hetfrz_classnuc=.false. (stub scheme, ' // &
'no-op).'
end if
end if
end subroutine hetfrz_classnuc_stub_init
end module hetfrz_classnuc_stub