Changeset 2296


Ignore:
Timestamp:
Jun 28, 2017 7:53:56 AM (4 years ago)
Author:
maronga
Message:

added new spinup mechanism for surface/radiation models

Location:
palm/trunk/SOURCE
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/Makefile

    r2269 r2296  
    2525# -----------------
    2626# $Id$
     27# Added time_integration_spinup
     28#
     29# 2269 2017-06-09 11:57:32Z suehring
    2730# Add dependency in read_3d_binary
    2831#
     
    377380        surface_coupler.f90 surface_layer_fluxes_mod.f90 swap_timelevel.f90 \
    378381        synthetic_turbulence_generator_mod.f90 temperton_fft_mod.f90 \
    379         time_integration.f90 time_to_string.f90 timestep.f90 \
     382        time_integration.f90 time_integration_spinup.f90 time_to_string.f90 timestep.f90 \
    380383        timestep_scheme_steering.f90 transpose.f90 tridia_solver_mod.f90 \
    381384        urban_surface_mod.f90 \
     
    619622        surface_layer_fluxes_mod.o surface_mod.o \
    620623        urban_surface_mod.o virtual_flight_mod.o wind_turbine_model_mod.o
     624time_integration_spinup.o: cpulog_mod.o modules.o land_surface_model_mod.o mod_kinds.o radiation_model_mod.o surface_layer_fluxes_mod.o urban_surface_mod.o
    621625time_to_string.o: mod_kinds.o
    622626timestep.o: modules.o cpulog_mod.o mod_kinds.o microphysics_mod.o \
  • palm/trunk/SOURCE/flow_statistics.f90

    r2292 r2296  
    2525! -----------------
    2626! $Id$
     27! Enabled output of radiation quantities for radiation_scheme = 'constant'
     28!
     29! 2292 2017-06-20 09:51:42Z schwenkel
    2730! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
    2831! includes two more prognostic equations for cloud drop concentration (nc) 
     
    10871090             ENDIF
    10881091
    1089              IF ( radiation  .AND.  radiation_scheme /= 'constant' )  THEN
     1092             IF ( radiation )  THEN
    10901093                sums_l(nzb,99,tn)  = sums_l(nzb,99,tn)  + rad_net(j,i)
    10911094                sums_l(nzb,100,tn)  = sums_l(nzb,100,tn)  + rad_lw_in(nzb,j,i)
  • palm/trunk/SOURCE/land_surface_model_mod.f90

    r2282 r2296  
    2525! -----------------
    2626! $Id$
     27! Bugfix in calculation of bare soil heat capacity.
     28! Bugfix in calculation of shf
     29! Added support for spinups
     30!
     31! 2282 2017-06-13 11:38:46Z schwenkel
    2732! Bugfix for check of saturation moisture
    2833!
     
    226231
    227232    USE control_parameters,                                                    &
    228         ONLY:  cloud_physics, dt_3d, humidity, intermediate_timestep_count,    &
     233        ONLY:  cloud_physics, coupling_start_time, dt_3d, end_time, humidity,  &
     234               intermediate_timestep_count,                                    &
    229235               initializing_actions, intermediate_timestep_count_max,          &
    230236               land_surface, max_masks, precipitation, pt_surface,             &
    231                rho_surface, surface_pressure, timestep_scheme, tsc,            &
     237               rho_surface, spinup, spinup_pt_mean, spinup_time,               &
     238               surface_pressure, timestep_scheme, tsc,                         &
    232239               time_since_reference_point
    233240
     
    12301237       ENDIF
    12311238    ENDDO
    1232   
     1239 
    12331240 END SUBROUTINE lsm_check_parameters
    12341241 
     
    13741381          c_surface_tmp = (rho_c_soil * ( 1.0_wp - surf%m_sat(nzb_soil,m) )    &
    13751382                           + rho_c_water * surf_m_soil%var_2d(nzb_soil,m) )    &
    1376                            * dz_soil_layer(nzb_soil) * 0.25_wp               
     1383                           * dz_soil_layer(nzb_soil) * 0.5_wp               
    13771384
    13781385       ELSEIF ( surf_t_surface%var_1d(m) >= surf_t_soil%var_2d(nzb_soil,m)) &
     
    20692076       dz_soil_layer(nzb_soil) = 2.0_wp * zs(nzb_soil)
    20702077       zs_layer(nzb_soil)      = 2.0_wp * zs(nzb_soil)
    2071 
    2072 
    2073        
    2074        
     2078 
    20752079       DO  k = nzb_soil+1, nzt_soil
    20762080          dz_soil_layer(k) = ( zs(k) - zs_layer(k-1) ) * 2.0_wp
     
    23222326                DO  k = nzb_soil, nzt_soil 
    23232327                   t_soil_h%var_2d(k,m)   = soil_temperature(k)
    2324                    m_soil_h%var_2d(k,m)   = MAX(soil_moisture(k),surf_lsm_h%m_wilt(k,m))
    2325                    soil_moisture(k)       = MAX(soil_moisture(k),wilting_point)           
     2328                   m_soil_h%var_2d(k,m)   = soil_moisture(k)
    23262329                ENDDO
    23272330                t_soil_h%var_2d(nzt_soil+1,m) = soil_temperature(nzt_soil+1)
     
    23432346                DO  k = nzb_soil, nzt_soil                       
    23442347                   t_soil_h%var_2d(k,m)   = soil_temperature(k)
    2345                    m_soil_h%var_2d(k,m)   = MAX(soil_moisture(k),surf_lsm_h%m_wilt(k,m))
    2346                    soil_moisture(k)       = MAX(soil_moisture(k),wilting_point)         
     2348                   m_soil_h%var_2d(k,m)   = soil_moisture(k)       
    23472349                ENDDO
    23482350                t_soil_h%var_2d(nzt_soil+1,m) = soil_temperature(nzt_soil+1)
     
    24112413                   surf_lsm_v(l)%z0q(m)         = z0h_pavement 
    24122414                   DO  k = nzb_soil, nzt_soil 
    2413                       t_soil_v(l)%var_2d(k,m)      = soil_temperature(k)
    2414                       m_soil_v(l)%var_2d(k,m)   = MAX(soil_moisture(k),surf_lsm_v(l)%m_wilt(k,m))
    2415                       soil_moisture(k)          = MAX(soil_moisture(k),wilting_point)   
     2415                      t_soil_v(l)%var_2d(k,m)   = soil_temperature(k)
     2416                      m_soil_v(l)%var_2d(k,m)   = soil_moisture(k)
    24162417                   ENDDO
    24172418                   t_soil_v(l)%var_2d(nzt_soil+1,m)  = soil_temperature(nzt_soil+1)
     
    24332434                   DO  k = nzb_soil, nzt_soil                       
    24342435                      t_soil_v(l)%var_2d(k,m)   = soil_temperature(k)
    2435                       m_soil_v(l)%var_2d(k,m)   = MAX(soil_moisture(k),surf_lsm_v(l)%m_wilt(k,m))
    2436                       soil_moisture(k)          = MAX(soil_moisture(k),wilting_point)         
     2436                      m_soil_v(l)%var_2d(k,m)   = soil_moisture(k)       
    24372437                   ENDDO
    24382438                   t_soil_v(l)%var_2d(nzt_soil+1,m) = soil_temperature(nzt_soil+1)
     
    28572857       land_surface = .TRUE.
    28582858
     2859!
     2860!--    Activate spinup
     2861       IF ( spinup_time > 0.0_wp )  THEN
     2862          coupling_start_time = spinup_time
     2863          end_time = end_time + spinup_time
     2864          IF ( spinup_pt_mean == 9999999.9_wp )  THEN
     2865             spinup_pt_mean = pt_surface
     2866          ENDIF
     2867          spinup = .TRUE.
     2868       ENDIF
     2869
     2870
    28592871 10    CONTINUE
    28602872       
  • palm/trunk/SOURCE/modules.f90

    r2292 r2296  
    2525! -----------------
    2626! $Id$
     27! Added parameters for model spinup
     28!
     29! 2292 2017-06-20 09:51:42Z schwenkel
    2730! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
    2831! includes two more prognostic equations for cloud drop concentration (nc) 
     
    11441147    LOGICAL ::  constant_waterflux = .TRUE.                  !< water flux at all surfaces constant?
    11451148    LOGICAL ::  create_disturbances = .TRUE.                 !< namelist parameter
     1149    LOGICAL ::  data_output_during_spinup = .FALSE.          !< namelist parameter
    11461150    LOGICAL ::  data_output_2d_on_each_pe = .TRUE.           !< namelist parameter
    11471151    LOGICAL ::  disturbance_created = .FALSE.                !< flow disturbance imposed?
     
    11971201    LOGICAL ::  sloping_surface = .FALSE.                    !< use sloped surface?
    11981202                                                             !< (namelist parameter alpha_surface)
     1203    LOGICAL ::  spinup = .FALSE.                             !< perform model spinup without atmosphere code?
    11991204    LOGICAL ::  stop_dt = .FALSE.                            !< (Siggi add short description)
    12001205    LOGICAL ::  synchronous_exchange = .FALSE.               !< namelist parameter
     
    12731278    REAL(wp) ::  dt_restart = 9999999.9_wp                     !< namelist parameter
    12741279    REAL(wp) ::  dt_run_control = 60.0_wp                      !< namelist parameter
     1280    REAL(wp) ::  dt_spinup = 60.0_wp                           !< namelist parameter
    12751281    REAL(wp) ::  dt_3d = 1.0_wp                                !< time step
    12761282    REAL(wp) ::  dz = -1.0_wp                                  !< namelist parameter
     
    13301336    REAL(wp) ::  skip_time_do2d_yz = 9999999.9_wp              !< namelist parameter
    13311337    REAL(wp) ::  skip_time_do3d = 9999999.9_wp                 !< namelist parameter
     1338    REAL(wp) ::  spinup_pt_amplitude = 9999999.9_wp            !< namelist parameter
     1339    REAL(wp) ::  spinup_pt_mean = 9999999.9_wp                 !< namelist parameter
     1340    REAL(wp) ::  spinup_time = 0.0_wp                          !< namelist parameter
    13321341    REAL(wp) ::  surface_heatflux = 9999999.9_wp               !< namelist parameter
    13331342    REAL(wp) ::  surface_pressure = 1013.25_wp                 !< namelist parameter
  • palm/trunk/SOURCE/palm.f90

    r2292 r2296  
    2525! -----------------
    2626! $Id$
     27! Added call to new spinup routine
     28!
     29! 2292 2017-06-20 09:51:42Z schwenkel
    2730! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
    2831! includes two more prognostic equations for cloud drop concentration (nc) 
     
    184187               message_string, microphysics_morrison, microphysics_seifert,    &
    185188               nest_domain, neutral, nudging, passive_scalar, runnr,           &
    186                simulated_time, simulated_time_chr, urban_surface,              &
     189               simulated_time, simulated_time_chr, spinup, urban_surface,      &
    187190               user_interface_current_revision,                                &
    188191               user_interface_required_revision, version, wall_heatflux,       &
     
    392395
    393396    CALL cpu_log( log_point(2), 'initialisation', 'stop' )
     397
     398!
     399!-- Integration of the non-atmospheric equations (land surface model, urban
     400!-- surface model)
     401    IF ( spinup )  THEN
     402       CALL time_integration_spinup
     403    ENDIF
    394404
    395405!
  • palm/trunk/SOURCE/parin.f90

    r2292 r2296  
    2525! -----------------
    2626! $Id$
     27! Added parameters for model spinup
     28!
     29! 2292 2017-06-20 09:51:42Z schwenkel
    2730! Implementation of new microphysic scheme: cloud_scheme = 'morrison'
    2831! includes two more prognostic equations for cloud drop concentration (nc) 
     
    357360             coupling_start_time, curvature_solution_effects_bulk,             &
    358361             cycle_mg, damp_level_1d,                                          &
     362             data_output_during_spinup,                                        &
    359363             dissipation_1d,                                                   &
    360364             dp_external, dp_level_b, dp_smooth, dpdxy,                        &
    361              dt, dt_pr_1d, dt_run_control_1d, dx, dy, dz, dz_max,              &
     365             dt, dt_pr_1d, dt_run_control_1d, dt_spinup, dx, dy, dz, dz_max,   &
    362366             dz_stretch_factor, dz_stretch_level, end_time_1d,                 &
    363367             ensemble_member_nr, e_init, e_min, fft_method,                    &
     
    386390             sa_vertical_gradient, sa_vertical_gradient_level, scalar_advec,   &
    387391             scalar_rayleigh_damping,                                          &
     392             spinup_time, spinup_pt_amplitude, spinup_pt_mean,                 &
    388393             statistic_regions, subs_vertical_gradient,                        &
    389394             subs_vertical_gradient_level, surface_heatflux, surface_pressure, &
     
    547552             initializing_actions = 'set_constant_profiles'
    548553          ENDIF
    549 
    550554           
    551555!
  • palm/trunk/SOURCE/radiation_model_mod.f90

    r2270 r2296  
    2525! -----------------
    2626! $Id$
     27! Added output of rad_sw_out for radiation_scheme = 'constant'
     28!
     29! 2270 2017-06-09 12:18:47Z maronga
    2730! Numbering changed (2 timeseries removed)
    2831!
     
    12541257                                  + rad_lw_out(0,j,i) )                        &
    12551258                                  / ( 1.0_wp - alpha(j,i) )
     1259
     1260             rad_sw_out(0,j,i) =  alpha(j,i) * rad_sw_in(0,j,i)
    12561261
    12571262          ENDDO
  • palm/trunk/SOURCE/urban_surface_mod.f90

    r2287 r2296  
    2626! -----------------
    2727! $Id$
     28! Bugfix: adjust output of shf. Added support for spinups
     29!
     30! 2287 2017-06-15 16:46:30Z suehring
    2831! Bugfix in determination topography-top index
    2932!
     
    139142   
    140143    USE control_parameters,                                                    &
    141         ONLY:  dz, topography, dt_3d, intermediate_timestep_count,             &
    142                initializing_actions, intermediate_timestep_count_max,          &
    143                simulated_time, end_time, timestep_scheme, tsc,                 &
    144                coupling_char, io_blocks, io_group, message_string,             &
    145                time_since_reference_point, surface_pressure,                   &
    146                g, pt_surface, large_scale_forcing, lsf_surf,                   &
    147                time_do3d, dt_do3d, average_count_3d, varnamelength,            &
    148                urban_surface
     144        ONLY:  coupling_start_time, dz, topography, dt_3d,                     &
     145               intermediate_timestep_count, initializing_actions,              &
     146               intermediate_timestep_count_max, simulated_time, end_time,      &
     147               timestep_scheme, tsc, coupling_char, io_blocks, io_group,       &
     148               message_string, time_since_reference_point, surface_pressure,   &
     149               g, pt_surface, large_scale_forcing, lsf_surf, spinup,           &
     150               spinup_pt_mean, spinup_time, time_do3d, dt_do3d,                &
     151               average_count_3d, varnamelength, urban_surface
    149152
    150153    USE cpulog,                                                                &
     
    34893492!--    Set flag that indicates that the land surface model is switched on
    34903493       urban_surface = .TRUE.
     3494
     3495!
     3496!--    Activate spinup
     3497       IF ( spinup_time > 0.0_wp )  THEN
     3498          coupling_start_time = spinup_time
     3499          end_time = end_time + spinup_time
     3500          IF ( spinup_pt_mean == 9999999.9_wp )  THEN
     3501             spinup_pt_mean = pt_surface
     3502          ENDIF
     3503          spinup = .TRUE.
     3504       ENDIF
    34913505
    34923506 10    CONTINUE
     
    51615175!--        store kinematic surface heat fluxes for utilization in other processes
    51625176!--        diffusion_s, surface_layer_fluxes,...
    5163            surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / rho_cp
     5177           surf_usm_h%shf(m) = surf_usm_h%wshf_eb(m) / cp
    51645178
    51655179       ENDDO
     
    52825296!--           store kinematic surface heat fluxes for utilization in other processes
    52835297!--           diffusion_s, surface_layer_fluxes,...
    5284               surf_usm_v(l)%shf(m) = surf_usm_v(l)%wshf_eb(m) / rho_cp
     5298              surf_usm_v(l)%shf(m) = surf_usm_v(l)%wshf_eb(m) / cp
    52855299
    52865300           ENDDO
     
    53165330!--              Instead of this, we can adjust shf in case AH only at surface
    53175331                 surf_usm_h%shf(m) = surf_usm_h%shf(m) +                       &
    5318                                    aheat(j,i) * acoef * ddx * ddy / rho_cp
     5332                                   aheat(j,i) * acoef * ddx * ddy / cp
    53195333              ENDIF
    53205334           ENDDO
Note: See TracChangeset for help on using the changeset viewer.