40 USE rad_pcf,
ONLY: ip_cloud_mix_max, ip_cloud_mix_random, &
41 ip_cloud_triple, ip_cloud_part_corr, ip_cloud_part_corr_cnv, &
42 ip_cloud_mcica, ip_cloud_clear, &
43 ip_solver_homogen_direct, ip_solver_mix_direct_hogan, &
44 ip_solver_triple_hogan, &
45 ip_cloud_homogen, ip_cloud_ice_water, ip_cloud_conv_strat, &
47 ip_scaling, ip_mcica, &
48 ip_max_rand, ip_exponential_rand, ip_rand
49 USE ereport_mod,
ONLY: ereport
57 type(model_state_type),
target,
intent(inout) :: current_state
60 INTEGER :: namelist_unit
62 REAL(KIND=
jprb) :: zhook_handle
64 CHARACTER(LEN=*) :: RoutineName
65 parameter( routinename=
'sw_rad_input_mod')
66 CHARACTER(LEN=errormessagelength) :: CMessage
68 IF (
lhook)
CALL dr_hook(
'SW_INPUT',zhook_in,zhook_handle)
88 IF (
sw_control%i_cloud_representation == ip_cloud_homogen)
THEN
98 ELSE IF (
sw_control%i_overlap == ip_exponential_rand)
THEN
100 ELSE IF (
sw_control%i_overlap == ip_rand)
THEN
104 cmessage =
'The selected cloud overlap is not available'
105 CALL ereport(routinename, errorstatus, cmessage)
109 ELSE IF (
sw_control%i_cloud_representation == ip_cloud_ice_water)
THEN
117 sw_control%i_solver=ip_solver_mix_direct_hogan
120 ELSE IF (
sw_control%i_overlap == ip_exponential_rand)
THEN
122 ELSE IF (
sw_control%i_overlap == ip_rand)
THEN
126 cmessage =
'The selected cloud overlap is not available'
127 CALL ereport(routinename, errorstatus, cmessage)
131 ELSE IF ((
sw_control%i_cloud_representation == ip_cloud_conv_strat) .OR. &
132 (
sw_control%i_cloud_representation == ip_cloud_csiw))
THEN
136 cmessage =
'McICA is not compatible with the selected'// &
137 ' cloud representation'
138 CALL ereport(routinename, errorstatus, cmessage)
143 ELSE IF (
sw_control%i_overlap == ip_exponential_rand)
THEN
145 ELSE IF (
sw_control%i_overlap == ip_rand)
THEN
149 cmessage =
'The selected cloud overlap is not available'
150 CALL ereport(routinename, errorstatus, cmessage)
159 sw_control%i_solver = ip_solver_homogen_direct
164 IF (
lhook)
CALL dr_hook(
'SW_INPUT',zhook_out,zhook_handle)