Ignore:
Timestamp:
Nov 13, 2012 5:11:03 PM (11 years ago)
Author:
hoffmann
Message:

two-moment cloud physics implemented

Location:
palm/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk

  • palm/trunk/SOURCE

  • palm/trunk/SOURCE/modules.f90

    r1037 r1053  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! necessary expansions according to the two new prognostic equations (nr, qr)
     23! of the two-moment cloud physics scheme:
     24! +*_init, flux_l_*, diss_l_*, flux_s_*, diss_s_*, *sws, *swst, tend_*, *, *_p
     25! +t*_m, *_1, *_2, *_3, *_av, bc_*_b, bc_*_t, ibc_*_b, ibc_*_t, bc_*_t_val,
     26! +*_vertical_gradient, *_surface_initial_change, *_vertical_gradient_level,
     27! +*_vertical_gradient_level_ind, *_surface, constant_waterflux_*, 
     28! +cloud_scheme, icloud_scheme, surface_waterflux_*, sums_ws*s_ws_l, wall_*flux
     29!
     30! constants for the two-moment scheme:
     31! +a_vent, a_term, b_vent, b_term, c_evap, c_term, cof, eps_sb, k_cc, k_cr, k_rr,
     32! +k_br, kappa_rr, kin_vis_air, mu_constant_value, nc, pirho_l, dpirho_l, rho_1,
     33! +schmidt, schmidt_p_1d3, stp, x0, xmin, xmax, dt_precipitation, w_precipitation
     34!
     35! steering parameters for the two_moment scheme:
     36! +mu_constant, ventilation_effect
    2337!
    2438! Former revisions:
     
    369383          c_u_m, c_u_m_l, c_v_m, c_v_m_l, c_w_m, c_w_m_l, ddzu, ddzu_pres,     &
    370384          dd2zu, dzu, ddzw, dzw, hyp, inflow_damping_factor, lad, l_grid,      &
    371           ptdf_x, ptdf_y, pt_init, q_init, rdf, rdf_sc, sa_init, ug, u_init,   &
    372           u_nzb_p1_for_vfc, vg, v_init, v_nzb_p1_for_vfc, w_subs, zu, zw
     385          nr_init, ptdf_x, ptdf_y, pt_init, q_init, qr_init, rdf, rdf_sc,      &
     386          sa_init, ug, u_init, u_nzb_p1_for_vfc, vg, v_init, v_nzb_p1_for_vfc, &
     387          w_subs, zu, zw
    373388
    374389    REAL, DIMENSION(:,:), ALLOCATABLE ::                                       &
    375           c_u, c_v, c_w, diss_s_e, diss_s_pt, diss_s_q, diss_s_sa, diss_s_u,   &
    376           diss_s_v, diss_s_w, dzu_mg, dzw_mg, flux_s_e, flux_s_pt, flux_s_q,   &
    377           flux_s_sa, flux_s_u, flux_s_v, flux_s_w, f1_mg, f2_mg, f3_mg,        &
    378           mean_inflow_profiles, pt_slope_ref, qs, qsws, qswst, qswst_remote,   &
    379           rif, saswsb, saswst, shf, total_2d_a, total_2d_o, ts, tswst, us,     &
    380           usws, uswst, vsws, vswst, z0, z0h
     390          c_u, c_v, c_w, diss_s_e, diss_s_nr, diss_s_pt, diss_s_q, diss_s_qr,  &
     391          diss_s_sa, diss_s_u, diss_s_v, diss_s_w, dzu_mg, dzw_mg, flux_s_e,   &
     392          flux_s_nr, flux_s_pt, flux_s_q, flux_s_qr, flux_s_sa, flux_s_u,      &
     393          flux_s_v, flux_s_w, f1_mg, f2_mg, f3_mg, mean_inflow_profiles, nrs,  &
     394          nrsws, nrswst, pt_slope_ref, qs, qsws, qswst, qswst_remote, qrs,     &
     395          qrsws, qrswst, rif, saswsb, saswst, shf, total_2d_a, total_2d_o, ts, &
     396          tswst, us, usws, uswst, vsws, vswst, z0, z0h
     397         
    381398
    382399    REAL, DIMENSION(:,:,:), ALLOCATABLE ::                                     &
    383400          canopy_heat_flux, cdc, d, de_dx, de_dy, de_dz, diss, diss_l_e,       &
    384           diss_l_pt, diss_l_q, diss_l_sa, diss_l_u, diss_l_v, diss_l_w,        &
    385           flux_l_e, flux_l_pt, flux_l_q, flux_l_sa, flux_l_u, flux_l_v,        &
    386           flux_l_w, kh, km, lad_s, lad_u, lad_v, lad_w, lai, l_wall, p_loc,    &
    387           sec, sls, tend, u_m_l, u_m_n, u_m_r, u_m_s, v_m_l, v_m_n, v_m_r,     &
    388           v_m_s, w_m_l, w_m_n, w_m_r, w_m_s
     401          diss_l_nr, diss_l_pt, diss_l_q, diss_l_qr, diss_l_sa, diss_l_u,      &
     402          diss_l_v, diss_l_w, flux_l_e, flux_l_nr, flux_l_pt, flux_l_q,        &
     403          flux_l_qr, flux_l_sa, flux_l_u, flux_l_v, flux_l_w, kh, km, lad_s,   &
     404          lad_u, lad_v, lad_w, lai, l_wall, p_loc, sec, sls, tend, tend_pt,    &
     405          tend_nr, tend_q, tend_qr, u_m_l, u_m_n, u_m_r, u_m_s, v_m_l, v_m_n,  &
     406          v_m_r, v_m_s, w_m_l, w_m_n, w_m_r, w_m_s
     407           
    389408
    390409#if defined( __nopointer )
    391410    REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET ::                             &
    392           e, e_p, p, prho, pt, pt_p, q, q_p, ql, ql_c, ql_v, ql_vp, rho, sa,   &
    393           sa_p, te_m, tpt_m, tq_m, tsa_m, tu_m, tv_m, tw_m, u, u_p, v, v_p,    &
    394           vpt, w, w_p
     411          e, e_p, nr, nr_p, p, prho, pt, pt_p, q, q_p, ql, ql_c, ql_v, ql_vp,  &
     412          qr, qr_p, rho, sa, sa_p, te_m, tnr_m, tpt_m, tq_m, tqr_m, tsa_m,     &
     413          tu_m, tv_m, tw_m, u, u_p, v, v_p, vpt, w, w_p
    395414#else
    396415    REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET ::                             &
    397           e_1, e_2, e_3, p, prho_1, pt_1, pt_2, pt_3, q_1, q_2, q_3, ql_v,     &
    398           ql_vp, ql_1, ql_2, rho_1, sa_1, sa_2, sa_3, u_1, u_2, u_3,           &
    399           v_1, v_2, v_3, vpt_1, w_1, w_2, w_3
     416          e_1, e_2, e_3, p, prho_1, nr_1, nr_2, nr_3, pt_1, pt_2, pt_3, q_1,   &
     417          q_2, q_3, ql_v, ql_vp, ql_1, ql_2, qr_1, qr_2, qr_3, rho_1, sa_1,    &
     418          sa_2, sa_3, u_1, u_2, u_3, v_1, v_2, v_3, vpt_1, w_1, w_2, w_3
    400419
    401420    REAL, DIMENSION(:,:,:), POINTER ::                                         &
    402           e, e_p, prho, pt, pt_p, q, q_p, ql, ql_c, rho, sa, sa_p, te_m,       &
    403           tpt_m, tq_m, tsa_m, tu_m, tv_m, tw_m, u, u_p, v, v_p, vpt, w, w_p
     421          e, e_p, nr, nr_p, prho, pt, pt_p, q, q_p, ql, ql_c, qr, qr_p, rho,   &
     422          sa, sa_p, te_m, tnr_m, tpt_m, tq_m, tqr_m, tsa_m, tu_m, tv_m, tw_m,  &
     423          u, u_p, v, v_p, vpt, w, w_p
    404424#endif
    405425
     
    429449
    430450    REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: &
    431           e_av, lpt_av, p_av, pc_av, pr_av, pt_av, q_av, ql_av, ql_c_av,     &
    432           ql_v_av, ql_vp_av, qv_av, rho_av, s_av, sa_av, u_av, v_av, vpt_av, &
    433           w_av
     451          e_av, lpt_av, nr_av, p_av, pc_av, pr_av, prr_av, pt_av, q_av, ql_av, &
     452          ql_c_av, ql_v_av, ql_vp_av, qr_av, qv_av, rho_av, s_av, sa_av, u_av, &
     453          v_av, vpt_av, w_av
     454 
    434455 END MODULE averaging
    435456
     
    444465!------------------------------------------------------------------------------!
    445466
    446     LOGICAL ::  curvature_solution_effects = .FALSE.
    447 
    448     REAL  ::  bfactor, cp = 1005.0, diff_coeff_l = 0.23E-4,                    &
    449               effective_coll_efficiency,                                       &
    450               eps_ros = 1.0E-4,             &  ! accuracy of Rosenbrock method
    451               l_d_cp, l_d_r, l_d_rv, l_v = 2.5E+06,                            &
    452               mass_of_solute = 1.0E-17,              & ! soluted NaCl in kg
    453               molecular_weight_of_solute = 0.05844,  & ! mol. mass NaCl (kg/mol)
    454               molecular_weight_of_water = 0.01801528,& ! mol. mass H2O (kg/mol)
    455               prec_time_const = 0.001, ql_crit = 0.0005, rho_l = 1.0E3,        &
    456               r_d = 287.0, r_v = 461.51, thermal_conductivity_l = 2.43E-2,     &
    457               vanthoff = 2.0                        ! van't Hoff factor (NaCl)
    458 
    459     REAL, DIMENSION(:), ALLOCATABLE   ::  pt_d_t, t_d_pt
    460 
    461     REAL, DIMENSION(:,:), ALLOCATABLE ::  precipitation_amount, &
    462                                           precipitation_rate
     467    LOGICAL ::  curvature_solution_effects = .FALSE., &
     468                ventilation_effect = .FALSE., &
     469                mu_constant = .FALSE.
     470
     471    REAL ::  a_vent = 0.78,      & ! coef. for ventilation effect
     472             a_term = 9.65,      & ! coef. for terminal velocity (m s-1)
     473             b_vent = 0.308,     & ! coef. for ventilation effect
     474             b_term = 9.8,       & ! coef. for terminal velocity (m s-1)
     475             bfactor,            &
     476             c_evap = 0.7,       & ! constant in evaporation
     477             c_term = 600.0,     & ! coef. for terminal velocity (m-1)
     478             cof(6) = (/ 76.18009172947146,      & ! coefficients in the
     479                         -86.50532032941677,     & ! numerical
     480                         24.01409824083091,      & ! calculation of the
     481                         -1.231739572450155,     & ! gamma function
     482                         0.1208650973866179E-2,  &
     483                         -0.5395239384953E-5 /), &
     484             cp = 1005.0,        & ! heat capacity of dry air (J kg-1 K-1)
     485             diff_coeff_l = 0.23E-4, & ! diffusivity of water vapor (m2 s-1)
     486             effective_coll_efficiency, &
     487             eps_ros = 1.0E-4,   & ! accuracy of Rosenbrock method
     488             eps_sb = 1.0E-20,   & ! threshold in two-moments scheme
     489             k_cc = 4.44E09,     & ! const. rain-rain kernel (m3 kg-2 s-1)
     490             k_cr = 5.25,        & ! const. cloud-rain kernel (m3 kg-1 s-1)
     491             k_rr = 7.12,        & ! const. rain-rain kernel (m3 kg-1 s-1)
     492             k_br = 1000.,       & ! const. in breakup parametrization (m-1)
     493             kappa_rr = 60.7,    & ! const. in collision kernel (kg-1/3)
     494             kin_vis_air = 1.4086E-5, & ! kin. viscosity of air (m2 s-1)
     495             l_v = 2.5E+06,      & ! latent heat of vaporization (J kg-1)
     496             l_d_cp, l_d_r, l_d_rv, & ! l_v / cp, l_v / r_d, l_v / r_v
     497             mass_of_solute = 1.0E-17, & ! soluted NaCl (kg)
     498             molecular_weight_of_solute = 0.05844, & ! mol. m. NaCl (kg mol-1)
     499             molecular_weight_of_water = 0.01801528, & ! mol. m. H2O (kg mol-1)
     500             mu_constant_value = 0.0, & ! shape param. of gamma distribution
     501             nc = 70.0E6,        & ! cloud droplet concentration
     502             prec_time_const = 0.001, & !coef. in Kessler scheme
     503             pirho_l, dpirho_l,  & ! pi * rho_l / 6.0; 6.0 / ( pi * rho_l )
     504             rho_l = 1.0E3,      & ! density of water (kg m-3)
     505             ql_crit = 0.0005,   & ! coef. in Kessler scheme
     506             r_d = 287.0,        & ! sp. gas const. dry air (J kg-1 K-1)
     507             r_v = 461.51,       & ! sp. gas const. water vapor (J kg-1 K-1)
     508             schmidt = 0.71,     & ! Schmidt number
     509             schmidt_p_1d3,      & ! schmidt**( 1.0 / 3.0 )
     510             stp = 2.5066282746310005, & ! parameter in gamma function
     511             thermal_conductivity_l = 2.43E-2, & ! therm. cond. air (J m-1 s-1 K-1)
     512             vanthoff = 2.0,     & ! van't Hoff factor for NaCl
     513             x0 = 2.6E-10,       & ! separating drop mass (kg)
     514             xrmin = 2.6E-10,    & ! minimum rain drop size (kg)
     515             xrmax = 5.0E-6,     & ! maximum rain drop site (kg)
     516             dt_precipitation = 100.0, & ! timestep precipitation (s)
     517             w_precipitation = 9.65      ! maximum terminal velocity (m s-1)
     518
     519    REAL, DIMENSION(:), ALLOCATABLE     ::  dr, hyrho, lambda_r, mu_r, pt_d_t, &
     520                                            sed_nr, sed_q, sed_qr, t_d_pt, xr 
     521
     522    REAL, DIMENSION(:,:), ALLOCATABLE   ::  precipitation_amount, &
     523                                            precipitation_rate
     524!
     525!-- 3D array of precipitation rate
     526    REAL, DIMENSION(:,:,:), ALLOCATABLE ::  prr
    463527
    464528    SAVE
     
    529593                             scalar_advec = 'ws-scheme'
    530594    CHARACTER (LEN=20)   ::  bc_e_b = 'neumann', bc_lr = 'cyclic', &
     595                             bc_nr_b = 'dirichlet', bc_nr_t = 'neumann', &
    531596                             bc_ns = 'cyclic', bc_p_b = 'neumann', &
    532597                             bc_p_t = 'dirichlet', bc_pt_b = 'dirichlet', &
    533598                             bc_pt_t = 'initial_gradient', &
    534599                             bc_q_b = 'dirichlet', bc_q_t = 'neumann', &
     600                             bc_qr_b = 'dirichlet', bc_qr_t = 'neumann',&
    535601                             bc_s_b = 'dirichlet', bc_s_t = 'neumann', &
    536602                             bc_sa_t = 'neumann', &
    537603                             bc_uv_b = 'dirichlet', bc_uv_t = 'dirichlet', &
    538604                             canopy_mode = 'block', &
     605                             cloud_scheme = 'seifert_beheng', &
    539606                             coupling_mode = 'uncoupled', &
    540607                             coupling_mode_remote = 'uncoupled', &
     
    544611                             random_generator = 'numerical-recipes', &
    545612                             return_addres, return_username, &
    546                              timestep_scheme = 'runge-kutta-3'
     613                             timestep_scheme = 'runge-kutta-3'                             
    547614    CHARACTER (LEN=40)   ::  avs_data_file, output_format_netcdf, &
    548615                             topography = 'flat'
     
    577644                dp_level_ind_b = 0, dvrp_filecount = 0, &
    578645                dz_stretch_level_index, gamma_mg, gathered_size, &
    579                 grid_level, ibc_e_b, ibc_p_b, ibc_p_t, ibc_pt_b, ibc_pt_t, &
    580                 ibc_q_b, ibc_q_t, ibc_sa_t, ibc_uv_b, ibc_uv_t, &
     646                grid_level, ibc_e_b, ibc_nr_b, ibc_nr_t, ibc_p_b, ibc_p_t, &
     647                ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, ibc_qr_b, ibc_qr_t, &
     648                ibc_sa_t, ibc_uv_b, ibc_uv_t, icloud_scheme, &
    581649                inflow_disturbance_begin = -1, inflow_disturbance_end = -1, &
    582650                intermediate_timestep_count, intermediate_timestep_count_max, &
     
    600668                mask_size(max_masks,3) = -1, mask_size_l(max_masks,3) = -1, &
    601669                mask_start_l(max_masks,3) = -1, &
     670                nr_vertical_gradient_level_ind(10) = -9999, &
    602671                pt_vertical_gradient_level_ind(10) = -9999, &
    603672                q_vertical_gradient_level_ind(10) = -9999, &
     673                qr_vertical_gradient_level_ind(10) = -9999, &
    604674                sa_vertical_gradient_level_ind(10) = -9999, &
    605675                section(100,3), section_xy(100) = -9999, &
     
    631701                constant_top_momentumflux = .FALSE., &
    632702                constant_top_salinityflux = .TRUE., &
    633                 constant_waterflux = .TRUE., create_disturbances = .TRUE., &
     703                constant_waterflux = .TRUE., constant_waterflux_nr = .TRUE., &
     704                constant_waterflux_qr = .TRUE., create_disturbances = .TRUE., &
    634705                data_output_2d_on_each_pe = .TRUE., &
    635706                dissipation_control = .FALSE., disturbance_created = .FALSE., &
    636707                do2d_at_begin = .FALSE., do3d_at_begin = .FALSE., &
    637708                do3d_compress = .FALSE., do_sum = .FALSE., &
    638                 dp_external = .FALSE., dp_smooth = .FALSE., dt_fixed = .FALSE., &
     709                dp_external = .FALSE., dp_smooth = .FALSE., &
     710                drizzle = .TRUE., dt_fixed = .FALSE., &
    639711                dt_3d_reached, dt_3d_reached_l, exchange_mg = .FALSE., &
    640712                first_call_lpm = .TRUE., &
     
    668740             averaging_interval = 0.0, averaging_interval_pr = 9999999.9, &
    669741             averaging_interval_sp = 9999999.9, bc_pt_t_val, bc_q_t_val, &
    670              bottom_salinityflux = 0.0, &
     742             bc_qr_t_val, bc_nr_t_val, bottom_salinityflux = 0.0, &
    671743             building_height = 50.0, building_length_x = 50.0, &
    672744             building_length_y = 50.0, building_wall_left = 9999999.9, &
     
    699771             maximum_cpu_time_allowed = 0.0,  &
    700772             molecular_viscosity = 1.461E-5, &
     773             nr_surface = 0.0, nr_surface_initial_change = 0.0, &
    701774             old_dt = 1.0E-10, omega = 7.29212E-5, omega_sor = 1.8, &
    702775             particle_maximum_age = 9999999.9, &
     
    707780             pt_surface = 300.0, pt_surface_initial_change = 0.0, &
    708781             q_surface = 0.0, q_surface_initial_change = 0.0, &
     782             qr_surface = 0.0, qr_surface_initial_change = 0.0, &
    709783             rayleigh_damping_factor = -1.0, rayleigh_damping_height = -1.0, &
    710784             recycling_width = 9999999.9, residual_limit = 1.0E-4, &
     
    719793             surface_heatflux = 9999999.9, surface_pressure = 1013.25, &
    720794             surface_scalarflux = 9999999.9, surface_waterflux = 9999999.9, &
     795             surface_waterflux_nr = 0.0, surface_waterflux_qr = 0.0, &
    721796             s_surface = 0.0, s_surface_initial_change = 0.0, &
    722797             termination_time_needed = -1.0, time_coupling = 0.0, &
     
    740815             lad_vertical_gradient_level(10) = -9999999.9, &
    741816             mask_scale(3), &
     817             nr_vertical_gradient(10) = 0.0, &
     818             nr_vertical_gradient_level(10) = -1.0, &
    742819             pt_vertical_gradient(10) = 0.0, &
    743820             pt_vertical_gradient_level(10) = -9999999.9, &
    744821             q_vertical_gradient(10) = 0.0, &
    745822             q_vertical_gradient_level(10) = -1.0, &
     823             qr_vertical_gradient(10) = 0.0, &
     824             qr_vertical_gradient_level(10) = -1.0, &
    746825             s_vertical_gradient(10) = 0.0, &
    747826             s_vertical_gradient_level(10) = -1.0, &
     
    759838             volume_flow(1:2) = 0.0, volume_flow_area(1:2) = 0.0, &
    760839             volume_flow_initial(1:2) = 0.0, wall_heatflux(0:4) = 0.0, &
    761              wall_humidityflux(0:4) = 0.0, wall_qflux(0:4) = 0.0, &
     840             wall_humidityflux(0:4) = 0.0, wall_nrflux(0:4) = 0.0, &
     841             wall_qflux(0:4) = 0.0, wall_qrflux(0:4) = 0.0, &
    762842             wall_salinityflux(0:4) = 0.0, wall_scalarflux(0:4) = 0.0, &
    763843             subs_vertical_gradient(10) = 0.0, &
     
    15321612                                              sums_us2_ws_l, sums_vs2_ws_l,   &
    15331613                                              sums_ws2_ws_l,                  &
     1614                                              sums_wsnrs_ws_l,                &
    15341615                                              sums_wspts_ws_l,                &
    1535                                               sums_wssas_ws_l,sums_wsqs_ws_l
     1616                                              sums_wssas_ws_l,                &
     1617                                              sums_wsqs_ws_l,                 &
     1618                                              sums_wsqrs_ws_l
     1619                                             
    15361620    REAL, DIMENSION(:,:,:), ALLOCATABLE   ::  hom_sum, rmask, spectrum_x, &
    15371621                                              spectrum_y, sums_l, sums_l_l, &
Note: See TracChangeset for help on using the changeset viewer.