16 use variable_precision
, ONLY: wp
17 use initialize
, only: mphys_init
18 use mphys_switches
, only: set_mphys_switches, &
20 nq_l, nq_r, nq_i, nq_s, nq_g, &
21 l_2mc, l_2mr, l_2mi, l_2ms, l_2mg, &
22 l_3mr, l_3ms, l_3mg, &
23 soluble_modes, active_cloud, active_rain, &
24 insoluble_modes, active_ice, active_number, &
25 isol, iinsol, option, aerosol_option
27 use micro_main
, only: shipway_microphysics
28 use generic_diagnostic_variables
, ONLY: casdiags, allocate_diagnostic_space, &
29 deallocate_diagnostic_space
38 z_half(:,:,:),
z_centre(:,:,:),
dz(:,:,:),
qv(:,:,:),
qc(:,:,:) &
39 ,
nc(:,:,:),
qr(:,:,:),
nr(:,:,:),
m3r(:,:,:),
rho(:,:,:) &
41 ,
qi(:,:,:),
ni(:,:,:),
qs(:,:,:),
ns(:,:,:),
m3s(:,:,:) &
42 ,
qg(:,:,:),
ng(:,:,:),
m3g(:,:,:)
61 REAL(wp),
allocatable ::
dqv(:,:,:),
dth(:,:,:),
dqc(:,:,:),
dnc(:,:,:) &
63 ,
dqi(:,:,:),
dni(:,:,:),
dqs(:,:,:),
dns(:,:,:),
dm3s(:,:,:) &
128 type(model_state_type),
target,
intent(inout) :: current_state
129 character(len=*),
intent(in) :: name
130 type(component_field_information_type),
intent(out) :: field_information
132 field_information%field_type=component_array_field_type
133 field_information%data_type=component_double_data_type
134 field_information%number_dimensions=2
135 field_information%dimension_sizes(1)=current_state%local_grid%size(y_index)
136 field_information%dimension_sizes(2)=current_state%local_grid%size(x_index)
138 field_information%enabled=.true.
147 type(model_state_type),
target,
intent(inout) :: current_state
148 character(len=*),
intent(in) :: name
149 type(component_field_value_type),
intent(out) :: field_value
153 if (name .eq.
"surface_precip")
then 154 allocate(field_value%real_2d_array(current_state%local_grid%size(y_index), &
155 current_state%local_grid%size(x_index)))
164 type(model_state_type),
target,
intent(inout) :: current_state
166 integer :: y_size_local, x_size_local
168 if (is_component_enabled(current_state%options_database,
"simplecloud"))
then 169 call log_master_log(log_error,
"Casim and Simplecloud are enabled, this does not work yet. Please disable one")
172 y_size_local = current_state%local_grid%size(y_index)
173 x_size_local = current_state%local_grid%size(x_index)
182 kle=current_state%local_grid%size(z_index)
188 kte=current_state%local_grid%size(z_index)
195 allocate(
dz(
kte,1,1))
202 allocate(
qv(
kte,1,1))
203 allocate(
qc(
kte,1,1))
204 allocate(
nc(
kte,1,1))
205 allocate(
qr(
kte,1,1))
206 allocate(
nr(
kte,1,1))
208 allocate(
qi(
kte,1,1))
209 allocate(
ni(
kte,1,1))
210 allocate(
qs(
kte,1,1))
211 allocate(
ns(
kte,1,1))
213 allocate(
qg(
kte,1,1))
214 allocate(
ng(
kte,1,1))
269 casdiags % l_surface_rain = .true.
270 casdiags % l_surface_snow = .true.
271 casdiags % l_surface_graup = .true.
277 call set_mphys_switches(option,aerosol_option)
278 call mphys_init(
its,
ite,
jts,
jte,
kts,
kte,
ils,
ile,
jls,
jle,
kls,
kle, l_tendency=.true.)
288 if (.not.
allocated(current_state%cq))
then 289 allocate(current_state%cq(current_state%number_q_fields))
290 current_state%cq=0.0_default_precision
294 iqv = get_q_index(standard_q_names%VAPOUR,
'casim')
296 iql = get_q_index(standard_q_names%CLOUD_LIQUID_MASS,
'casim')
297 current_state%cq(
iql) = -1.0
300 iqr = get_q_index(standard_q_names%RAIN_MASS,
'casim')
301 current_state%cq(
iqr) = -1.0
303 if (.not. l_warm)
then 305 iqi = get_q_index(standard_q_names%ICE_MASS,
'casim')
306 current_state%cq(
iqi) = -1.0
309 iqs = get_q_index(standard_q_names%SNOW_MASS,
'casim')
310 current_state%cq(
iqs) = -1.0
313 iqg = get_q_index(standard_q_names%GRAUPEL_MASS,
'casim')
314 current_state%cq(
iqg) = -1.0
319 if (l_2mc)
inl = get_q_index(standard_q_names%CLOUD_LIQUID_NUMBER,
'casim')
320 if (l_2mr)
inr = get_q_index(standard_q_names%RAIN_NUMBER,
'casim')
321 if (.not. l_warm)
then 322 if (l_2mi)
ini = get_q_index(standard_q_names%ICE_NUMBER,
'casim')
323 if (l_2ms)
ins = get_q_index(standard_q_names%SNOW_NUMBER,
'casim')
324 if (l_2mg)
ing = get_q_index(standard_q_names%GRAUPEL_NUMBER,
'casim')
328 if (l_3mr)
i3mr = get_q_index(standard_q_names%RAIN_THIRD_MOMENT,
'casim')
329 if (.not. l_warm)
then 330 if (l_3ms)
i3ms = get_q_index(standard_q_names%SNOW_THIRD_MOMENT,
'casim')
331 if (l_3mg)
i3mg = get_q_index(standard_q_names%GRAUPEL_THIRD_MOMENT,
'casim')
336 get_q_index(standard_q_names%AITKEN_SOL_MASS,
'casim')
338 get_q_index(standard_q_names%AITKEN_SOL_NUMBER,
'casim')
340 get_q_index(standard_q_names%ACCUM_SOL_MASS,
'casim')
342 get_q_index(standard_q_names%ACCUM_SOL_NUMBER,
'casim')
344 get_q_index(standard_q_names%COARSE_SOL_MASS,
'casim')
346 get_q_index(standard_q_names%COARSE_SOL_NUMBER,
'casim')
348 get_q_index(standard_q_names%ACTIVE_SOL_LIQUID,
'casim')
350 get_q_index(standard_q_names%ACTIVE_SOL_RAIN,
'casim')
352 get_q_index(standard_q_names%COARSE_DUST_MASS,
'casim')
354 get_q_index(standard_q_names%COARSE_DUST_NUMBER,
'casim')
356 get_q_index(standard_q_names%ACTIVE_INSOL_ICE,
'casim')
358 get_q_index(standard_q_names%ACTIVE_SOL_ICE,
'casim')
360 get_q_index(standard_q_names%ACTIVE_INSOL_LIQUID,
'casim')
362 get_q_index(standard_q_names%ACCUM_INSOL_MASS,
'casim')
364 get_q_index(standard_q_names%ACCUM_INSOL_NUMBER,
'casim')
366 get_q_index(standard_q_names%ACTIVE_SOL_NUMBER,
'casim')
368 get_q_index(standard_q_names%ACTIVE_INSOL_NUMBER,
'casim')
375 type(model_state_type),
target,
intent(inout) :: current_state
378 INTEGER :: icol, jcol, iqx, target_x_index, target_y_index
380 icol=current_state%column_local_x
381 jcol=current_state%column_local_y
382 target_y_index=jcol-current_state%local_grid%halo_size(y_index)
383 target_x_index=icol-current_state%local_grid%halo_size(x_index)
385 if (current_state%halo_column .or. current_state%timestep < 2)
return 387 if (current_state%field_stepping == forward_stepping)
then 388 call log_master_log(log_error,
'Currently, CASIM assumes CENTERED_STEPPING')
389 dtwp = current_state%dtm
391 dtwp = 2.0*current_state%dtm
428 theta(:,1,1) = current_state%zth%data(:, jcol, icol) + current_state%global_grid%configuration%vertical%thref(:)
429 dth(:,1,1) = current_state%sth%data(:, jcol, icol)
430 exner(:,1,1) = current_state%global_grid%configuration%vertical%rprefrcp(:)
431 pressure(:,1,1) = current_state%global_grid%configuration%vertical%prefn(:)
432 z_centre(:,1,1) = current_state%global_grid%configuration%vertical%zn(:)
433 dz(:,1,1) = current_state%global_grid%configuration%vertical%dz(:)
434 z_half(:
kte-1,1,1) = current_state%global_grid%configuration%vertical%z(:)
435 rho(:,1,1) = current_state%global_grid%configuration%vertical%rhon(:)
436 w(:,1,1) = current_state%zw%data(:, jcol, icol)
440 qv(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
441 dqv(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
446 qc(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
447 dqc(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
451 qr(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
452 dqr(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
456 nc(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
457 dnc(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
461 nr(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
462 dnr(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
466 m3r(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
467 dm3r(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
473 qi(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
474 dqi(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
478 qs(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
479 dqs(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
483 qg(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
484 dqg(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
488 ni(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
489 dni(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
493 ns(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
494 dns(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
498 ng(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
499 dng(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
503 m3s(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
504 dm3s(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
508 m3g(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
509 dm3g(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
547 CALL shipway_microphysics( &
601 current_state%sth%data(:,jcol,icol) = current_state%sth%data(:,jcol,icol) +
dth(:,1,1)
604 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dqv(:,1,1)
609 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dqc(:,1,1)
614 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dqr(:,1,1)
618 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dnc(:,1,1)
622 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dnr(:,1,1)
626 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dm3r(:,1,1)
632 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dqi(:,1,1)
636 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dqs(:,1,1)
640 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dqg(:,1,1)
644 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dni(:,1,1)
648 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dns(:,1,1)
652 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dng(:,1,1)
656 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dm3s(:,1,1)
660 current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) +
dm3g(:,1,1)
703 casdiags % SurfaceRainR(1,1) + casdiags % SurfaceSnowR(1,1)
713 Use mphys_switches
, only: iopt_act, option, aerosol_option &
714 , l_aaut, l_aacc, l_aevp, l_ased, l_warm &
715 , l_inuc, iopt_rcrit, iopt_inuc, l_iaut, l_iacw &
716 , l_rain, l_boussinesq, diag_mu_option &
717 , l_sed_3mdiff, l_cons, l_abelshipway, l_sed_icecloud_as_1m &
718 , l_active_inarg2000, process_level, l_separate_rain, l_idep &
719 , max_step_length, max_sed_length, l_sg, l_g, l_passive &
720 , l_passive3m, l_limit_psd, l_override_checks &
721 , max_mu, fix_mu, l_raci_g, l_onlycollect, l_inhom_revp &
722 , l_tidy_conserve_e , l_tidy_conserve_q &
764 Use mphys_parameters
, only: p1, p2, p3, sp1, sp2, sp3
766 type(model_state_type),
target,
intent(inout) :: current_state
770 option = options_get_integer(current_state%options_database,
'option')
771 diag_mu_option = options_get_integer(current_state%options_database,
'diag_mu_option')
772 iopt_act = options_get_integer(current_state%options_database,
'iopt_act')
773 iopt_inuc = options_get_integer(current_state%options_database,
'iopt_inuc')
774 process_level = options_get_integer(current_state%options_database,
'process_level')
775 aerosol_option = options_get_integer(current_state%options_database,
'aerosol_option')
776 max_step_length = options_get_real(current_state%options_database,
'max_step_length')
777 max_sed_length = options_get_real(current_state%options_database,
'max_sed_length')
778 p1 = options_get_real(current_state%options_database,
'p1')
779 p2 = options_get_real(current_state%options_database,
'p2')
780 p3 = options_get_real(current_state%options_database,
'p3')
781 sp1 = options_get_real(current_state%options_database,
'sp1')
782 sp2 = options_get_real(current_state%options_database,
'sp2')
783 sp3 = options_get_real(current_state%options_database,
'sp3')
784 max_mu = options_get_real(current_state%options_database,
'max_mu')
785 fix_mu = options_get_real(current_state%options_database,
'fix_mu')
787 l_aaut = options_get_logical(current_state%options_database,
'l_aaut')
788 l_aacc = options_get_logical(current_state%options_database,
'l_aacc')
789 l_aevp = options_get_logical(current_state%options_database,
'l_aevp')
790 l_ased = options_get_logical(current_state%options_database,
'l_ased')
791 l_warm = options_get_logical(current_state%options_database,
'l_warm')
792 l_inuc = options_get_logical(current_state%options_database,
'l_inuc')
793 l_iaut = options_get_logical(current_state%options_database,
'l_iaut')
794 l_idep = options_get_logical(current_state%options_database,
'l_idep')
795 l_iacw = options_get_logical(current_state%options_database,
'l_iacw')
796 l_active_inarg2000 = options_get_logical(current_state%options_database,
'l_active_inarg2000')
797 l_separate_rain = options_get_logical(current_state%options_database,
'l_separate_rain')
798 l_sg = options_get_logical(current_state%options_database,
'l_sg')
799 l_g = options_get_logical(current_state%options_database,
'l_g')
800 l_passive = options_get_logical(current_state%options_database,
'l_passive')
801 l_passive3m = options_get_logical(current_state%options_database,
'l_passive3m')
802 l_limit_psd = options_get_logical(current_state%options_database,
'l_limit_psd')
803 l_override_checks = options_get_logical(current_state%options_database,
'l_override_checks')
804 l_raci_g = options_get_logical(current_state%options_database,
'l_raci_g')
805 l_onlycollect = options_get_logical(current_state%options_database,
'l_onlycollect')
806 l_abelshipway = options_get_logical(current_state%options_database,
'l_abelshipway')
807 l_cons = options_get_logical(current_state%options_database,
'l_cons')
808 l_rain = options_get_logical(current_state%options_database,
'l_rain')
809 l_sed_3mdiff = options_get_logical(current_state%options_database,
'l_sed_3mdiff')
810 l_sed_icecloud_as_1m = options_get_logical(current_state%options_database,
'l_sed_icecloud_as_1m')
811 l_tidy_conserve_e = options_get_logical(current_state%options_database,
'l_tidy_conserve_E')
812 l_tidy_conserve_q = options_get_logical(current_state%options_database,
'l_tidy_conserve_q')
814 l_inhom_revp = options_get_logical(current_state%options_database,
'l_inhom_revp')
815 l_pcond = options_get_logical(current_state%options_database,
'l_pcond')
816 l_praut = options_get_logical(current_state%options_database,
'l_praut')
817 l_pracw = options_get_logical(current_state%options_database,
'l_pracw')
818 l_pracr = options_get_logical(current_state%options_database,
'l_pracr')
819 l_prevp = options_get_logical(current_state%options_database,
'l_prevp')
820 l_psedl = options_get_logical(current_state%options_database,
'l_psedl')
821 l_psedr = options_get_logical(current_state%options_database,
'l_psedr')
822 l_ptidy = options_get_logical(current_state%options_database,
'l_ptidy')
823 l_ptidy2 = options_get_logical(current_state%options_database,
'l_ptidy2')
824 l_pinuc = options_get_logical(current_state%options_database,
'l_pinuc')
825 l_pidep = options_get_logical(current_state%options_database,
'l_pidep')
826 l_piacw = options_get_logical(current_state%options_database,
'l_piacw')
827 l_psaut = options_get_logical(current_state%options_database,
'l_psaut')
828 l_psdep = options_get_logical(current_state%options_database,
'l_psdep')
829 l_psacw = options_get_logical(current_state%options_database,
'l_psacw')
830 l_pgdep = options_get_logical(current_state%options_database,
'l_pgdep')
831 l_pseds = options_get_logical(current_state%options_database,
'l_pseds')
832 l_psedi = options_get_logical(current_state%options_database,
'l_psedi')
833 l_psedg = options_get_logical(current_state%options_database,
'l_psedg')
834 l_psaci = options_get_logical(current_state%options_database,
'l_psaci')
835 l_praci = options_get_logical(current_state%options_database,
'l_praci')
836 l_psacr = options_get_logical(current_state%options_database,
'l_psacr')
837 l_pgacr = options_get_logical(current_state%options_database,
'l_pgacr')
838 l_pgacw = options_get_logical(current_state%options_database,
'l_pgacw')
839 l_pgaci = options_get_logical(current_state%options_database,
'l_pgaci')
840 l_pgacs = options_get_logical(current_state%options_database,
'l_pgacs')
841 l_piagg = options_get_logical(current_state%options_database,
'l_piagg')
842 l_psagg = options_get_logical(current_state%options_database,
'l_psagg')
843 l_pgagg = options_get_logical(current_state%options_database,
'l_pgagg')
844 l_psbrk = options_get_logical(current_state%options_database,
'l_psbrk')
845 l_pgshd = options_get_logical(current_state%options_database,
'l_pgshd')
846 l_pihal = options_get_logical(current_state%options_database,
'l_pihal')
847 l_psmlt = options_get_logical(current_state%options_database,
'l_psmlt')
848 l_pgmlt = options_get_logical(current_state%options_database,
'l_pgmlt')
849 l_phomr = options_get_logical(current_state%options_database,
'l_phomr')
850 l_phomc = options_get_logical(current_state%options_database,
'l_phomc')
851 l_pssub = options_get_logical(current_state%options_database,
'l_pssub')
852 l_pgsub = options_get_logical(current_state%options_database,
'l_pgsub')
853 l_pisub = options_get_logical(current_state%options_database,
'l_pisub')
854 l_pimlt = options_get_logical(current_state%options_database,
'l_pimlt')
real(wp), dimension(:,:,:), allocatable dz
real(wp), dimension(:,:,:), allocatable qr
real(wp), dimension(:,:,:), allocatable dqi
real(wp), dimension(:,:,:), allocatable dth
integer i_activeinsolnumber
subroutine field_value_retrieval_callback(current_state, name, field_value)
Field value retrieval callback, this returns the value of a specific published field.
real(wp), dimension(:,:,:), allocatable dactiveinsolnumber
real(wp), dimension(:,:,:), allocatable activesolrain
Wrapper type for the value returned for a published field from a component.
real(wp), dimension(:,:,:), allocatable qc
real(wp), dimension(:,:,:), allocatable activesolice
real(wp), dimension(:,:,:), allocatable m3g
integer, parameter, public forward_stepping
type(standard_q_names_type), public standard_q_names
real(wp), dimension(:,:,:), allocatable dqg
real(wp), dimension(:,:,:), allocatable dm3g
real(wp), dimension(:,:,:), allocatable daitkensolmass
integer, parameter, public log_error
Only log ERROR messages.
real(wp), dimension(:,:,:), allocatable dm3r
real(wp), dimension(:,:,:), allocatable nr
real(wp), dimension(:,:,:), allocatable nc
subroutine initialisation_callback(current_state)
The initialisation callback sets up the microphysics.
real(wp), dimension(:,:,:), allocatable dqv
real(wp), dimension(:,:,:), allocatable dnr
real(wp), dimension(:,:,:), allocatable aitkensolmass
real(wp), dimension(:,:,:), allocatable dactiveinsolice
integer, parameter, public default_precision
MPI communication type which we use for the prognostic and calculation data.
integer, parameter, public z_index
Grid index parameters.
real(wp), dimension(:,:,:), allocatable dcoarsedustmass
real(wp), dimension(:,:,:), allocatable exner
real(wp), dimension(:,:,:), allocatable coarsedustnumber
real(wp), dimension(:,:,:), allocatable w
Contains common definitions for the data and datatypes used by MONC.
real(wp), dimension(:,:,:), allocatable daccumsolmass
The ModelState which represents the current state of a run.
logical function, public is_component_enabled(options_database, component_name)
Determines whether or not a specific component is registered and enabled.
subroutine, public log_master_log(level, message)
Will log just from the master process.
real(wp), dimension(:,:,:), allocatable ni
Description of a component.
integer i_coarsedustnumber
real(wp), dimension(:,:,:), allocatable dactivesolrain
real(wp), dimension(:,:,:), allocatable qv
integer, parameter, public component_array_field_type
real(wp), dimension(:,:,:), allocatable ng
real(wp), dimension(:,:,:), allocatable daitkensolnumber
real(wp), dimension(:,:,:), allocatable dactivesolnumber
real(wp), dimension(:,:,:), allocatable m3r
real(wp), dimension(:,:,:), allocatable ns
Scientific constant values used throughout simulations. Each has a default value and this can be over...
real(wp), dimension(:,:,:), allocatable activeinsolliquid
real(wp), dimension(:,:,:), allocatable coarsesolmass
real(wp), dimension(:,:,:), allocatable activeinsolnumber
real(wp), dimension(:,:,:), allocatable accuminsolnumber
This manages the Q variables and specifically the mapping between names and the index that they are s...
real(wp), dimension(:,:,:), allocatable activesolliquid
real(wp), dimension(:,:,:), allocatable dni
real(wp), dimension(:,:,:), allocatable qg
integer i_activeinsolliquid
Interfaces and types that MONC components must specify.
integer i_activesolnumber
real(wp), dimension(:,:,:), allocatable accumsolmass
real(wp), dimension(:,:,:), allocatable dnc
subroutine read_configuration(current_state)
real(wp), dimension(:,:,:), allocatable accumsolnumber
real(wp), dimension(:,:,:), allocatable dqc
real(wp), dimension(:,:,:), allocatable theta
type(component_descriptor_type) function, public casim_get_descriptor()
Provides the descriptor back to the caller and is used in component registration. ...
real(wp), dimension(:,:,:), allocatable m3s
integer i_coarsesolnumber
real(wp), dimension(:,:,:), allocatable tke
real(wp), dimension(:,:,:), allocatable dactivesolliquid
real(wp), dimension(:,:,:), allocatable dactiveinsolliquid
real(wp), dimension(:,:,:), allocatable dns
real(wp), dimension(:,:,:), allocatable activesolnumber
real(wp), dimension(:,:,:), allocatable dcoarsesolmass
integer i_aitkensolnumber
real(kind=default_precision) function, public options_get_real(options_database, key, index)
Retrieves a real value from the database that matches the provided key.
real(wp), dimension(:,:,:), allocatable dqs
Implimentation of CASIM microphysics.
Functionality to support the different types of grid and abstraction between global grids and local o...
real(wp), dimension(:,:,:), allocatable coarsesolnumber
integer function, public options_get_integer(options_database, key, index)
Retrieves an integer value from the database that matches the provided key.
integer i_activesolliquid
real(wp), dimension(:,:,:), allocatable aitkensolnumber
Manages the options database. Contains administration functions and deduce runtime options from the c...
real(wp), dimension(:,:,:), allocatable qi
integer, parameter, public log_info
Log INFO, WARNING and ERROR messages.
real(wp), dimension(:,:,:), allocatable dcoarsedustnumber
logical function, public options_get_logical(options_database, key, index)
Retrieves a logical value from the database that matches the provided key.
real(wp), dimension(:,:,:), allocatable daccuminsolnumber
real(wp), dimension(:,:,:), allocatable accuminsolmass
integer i_accuminsolnumber
real(wp), dimension(:,:,:), allocatable daccumsolnumber
real(wp), dimension(:,:,:), allocatable activeinsolice
real(wp), dimension(:,:,:), allocatable daccuminsolmass
subroutine timestep_callback(current_state)
Called for each column per timestep this will calculate the microphysical tendencies.
real(wp), dimension(:,:,:), allocatable dcoarsesolnumber
real(wp), dimension(:,:,:), allocatable dng
real(wp), dimension(:,:,:), allocatable z_half
The model state which represents the current state of a run.
real(wp), dimension(:,:,:), allocatable z_centre
real(wp), dimension(:,:,:), allocatable coarsedustmass
real(wp), dimension(:,:,:), allocatable dqr
integer, parameter, public y_index
real(wp), dimension(:,:,:), allocatable rho
real(wp), dimension(:,:,:), allocatable dm3s
integer, parameter, public x_index
real(wp), dimension(:,:), allocatable surface_precip
integer function, public get_q_index(name, assigning_component)
Add in a new entry into the register if the name does not already exist or return the index of the pr...
real(wp), dimension(:,:,:), allocatable qs
real(wp), dimension(:,:,:), allocatable dactivesolice
subroutine field_information_retrieval_callback(current_state, name, field_information)
integer, parameter, public component_double_data_type
real(wp), dimension(:,:,:), allocatable pressure