Changeset 1757


Ignore:
Timestamp:
Feb 22, 2016 3:49:32 PM (5 years ago)
Author:
maronga
Message:

some changes in land surface model, radiation model, nudging and some minor updates

Location:
palm/trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/LIB/rrtmg/install_rrtmg

    r1614 r1757  
    5353#
    5454
    55  compiler_name="ftn"
    56  fopts="-em -s real64 -O3 -hnoomp -hfp3 -hdynamic"
    57  fopts_trace="-eD -em -g -R b -K trap=fp -O0 -hnoomp -fpic"
     55 compiler_name="mpif90"
     56 fopts="-fltconsistency -O3 -cpp -r8 -nbs -convert little_endian -I /muksoft/packages/netcdf/4_intel/include"
     57 fopts_trace="-fpe0 -C -check nooutput_conversion -debug -traceback -g -w -xT -O0 -ftz -fno-alias -no-prec-div -no-prec-sqrt -ip -nbs -convert little_endian -diag-disable 8290,8291 -I /muksoft/packages/netcdf/4_intel/include"
    5858 install_path="$HOME/rrtmg"
    5959 compile_static=false
    60  compile_shared=true
    61  compile_static_debug=false
     60 compile_shared=false
     61 compile_static_debug=true
    6262 compile_shared_debug=true
    6363
  • palm/trunk/SCRIPTS/mrun

    r1756 r1757  
    2222# Current revisions:
    2323# ------------------
    24 #
     24# Bugfix: use random number when PBS system is not working properly at lccray*
    2525#
    2626# Former revisions:
  • palm/trunk/SCRIPTS/palm_wd_files/wd.ui

    r1613 r1757  
    622622   <hints>
    623623    <hint type="sourcelabel">
    624      <x>405</x>
    625      <y>135</y>
     624     <x>491</x>
     625     <y>172</y>
    626626    </hint>
    627627    <hint type="destinationlabel">
     
    638638   <hints>
    639639    <hint type="sourcelabel">
    640      <x>554</x>
    641      <y>142</y>
     640     <x>615</x>
     641     <y>172</y>
    642642    </hint>
    643643    <hint type="destinationlabel">
     
    654654   <hints>
    655655    <hint type="sourcelabel">
    656      <x>710</x>
    657      <y>140</y>
     656     <x>739</x>
     657     <y>172</y>
    658658    </hint>
    659659    <hint type="destinationlabel">
    660660     <x>656</x>
    661661     <y>150</y>
     662    </hint>
     663   </hints>
     664  </connection>
     665  <connection>
     666   <sender>actionOptions</sender>
     667   <signal>triggered()</signal>
     668   <receiver>MainWindow</receiver>
     669   <slot>Options()</slot>
     670   <hints>
     671    <hint type="sourcelabel">
     672     <x>-1</x>
     673     <y>-1</y>
     674    </hint>
     675    <hint type="destinationlabel">
     676     <x>398</x>
     677     <y>98</y>
    662678    </hint>
    663679   </hints>
  • palm/trunk/SOURCE/check_parameters.f90

    r1746 r1757  
    42844284!
    42854285!-- Check nudging and large scale forcing from external file
    4286     IF ( nudging .AND. ( .NOT. large_scale_forcing ) )  THEN
    4287        message_string = 'Nudging requires large_scale_forcing = .T.. &'//      &
    4288                         'Surface fluxes and geostrophic wind should be &'//    &
    4289                         'prescribed in file LSF_DATA'
    4290        CALL message( 'check_parameters', 'PA0374', 1, 2, 0, 6, 0 )
    4291     ENDIF
     4286!!!    IF ( nudging .AND. ( .NOT. large_scale_forcing ) )  THEN
     4287!!!       message_string = 'Nudging requires large_scale_forcing = .T.. &'//      &
     4288!!!                        'Surface fluxes and geostrophic wind should be &'//    &
     4289!!!                        'prescribed in file LSF_DATA'
     4290!!!       CALL message( 'check_parameters', 'PA0374', 1, 2, 0, 6, 0 )
     4291!!    ENDIF
    42924292
    42934293    IF ( large_scale_forcing .AND. ( bc_lr /= 'cyclic'  .OR.                   &
  • palm/trunk/SOURCE/land_surface_model.f90

    r1710 r1757  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Bugfix: set tm_soil_m to zero after allocation. Added parameter
     22! unscheduled_radiation_calls to control calls of the radiation model based on
     23! the skin temperature change during one time step (preliminary version). Set
     24! qsws_soil_eb to zero at model start (previously set to qsws_eb). Removed MAX
     25! function as it cannot be vectorized.
    2226!
    2327! Former revisions:
     
    132136    USE radiation_model_mod,                                                   &
    133137        ONLY:  force_radiation_call, radiation_scheme, rad_net, rad_sw_in,     &
    134                rad_lw_out, rad_lw_out_change_0, sigma_sb
     138               rad_lw_out, rad_lw_out_change_0, sigma_sb,                      &
     139               unscheduled_radiation_calls
    135140       
    136141#if defined ( __rrtmg )
     
    320325
    321326    REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::                                 &
    322               tt_soil_m, & !< t_soil storage array 
    323               tm_soil_m, & !< m_soil storage array 
     327              tt_soil_m, & !< t_soil storage array
     328              tm_soil_m, & !< m_soil storage array
    324329              root_fr      !< root fraction (sum=1)
    325330
     
    668673       tt_surface_m = 0.0_wp
    669674       tt_soil_m    = 0.0_wp
     675       tm_soil_m    = 0.0_wp
    670676       tm_liq_eb_m  = 0.0_wp
    671677       c_liq        = 0.0_wp
     
    681687
    682688       qsws_liq_eb  = 0.0_wp
    683        qsws_soil_eb = qsws_eb
     689       qsws_soil_eb = 0.0_wp
    684690       qsws_veg_eb  = 0.0_wp
    685691
     
    12351241
    12361242!
    1237 !--          In case of fast changes in the skin temperature, it is required to
    1238 !--          update the radiative fluxes in order to keep the solution stable
    1239              IF ( ABS( t_surface_p(j,i) - t_surface(j,i) ) > 0.2_wp )  THEN
     1243!--          In case of fast changes in the skin temperature, it is possible to
     1244!--          update the radiative fluxes independently from the prescribed
     1245!--          radiation call frequency. This effectively prevents oscillations,
     1246!--          especially when setting skip_time_do_radiation /= 0. The threshold
     1247!--          value of 0.2 used here is just a first guess. This method should be
     1248!--          revised in the future as tests have shown that the threshold is
     1249!--          often reached, when no oscillations would occur (causes immense
     1250!--          computing time for the radiation code).
     1251             IF ( ABS( t_surface_p(j,i) - t_surface(j,i) ) > 0.2_wp .AND.      &
     1252                  unscheduled_radiation_calls )  THEN
    12401253                force_radiation_call_l = .TRUE.
    12411254             ENDIF
     
    13881401!
    13891402!--    Make a logical OR for all processes. Force radiation call if at
    1390 !--    least one processor
    1391        IF ( intermediate_timestep_count == intermediate_timestep_count_max-1 ) &
    1392        THEN
     1403!--    least one processor reached the threshold change in skin temperature
     1404       IF ( unscheduled_radiation_calls .AND. intermediate_timestep_count      &
     1405            == intermediate_timestep_count_max-1 )  THEN
    13931406#if defined( __parallel )
    13941407          IF ( collective_wait )  CALL MPI_BARRIER( comm2d, ierr )
     
    16281641!
    16291642!--             Account for dry soils (find a better solution here!)
    1630                 m_soil_p(:,j,i) = MAX(m_soil_p(:,j,i),0.0_wp)
     1643                DO  k = nzb_soil, nzt_soil
     1644                   IF ( m_soil_p(k,j,i) < 0.0_wp )  m_soil_p(k,j,i) = 0.0_wp
     1645                ENDDO
     1646
     1647
     1648
    16311649
    16321650!
  • palm/trunk/SOURCE/nudging.f90

    r1683 r1757  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! Bugfix: allow for using higher vertical resolution in nudging file than grid
     22! spacing in the LES model
    2223!
    2324! Former revisions:
     
    208209
    209210          DO  k = nzb, nzt+1
    210              IF ( highheight < zu(k) )  THEN
     211             DO WHILE ( highheight < zu(k) )
    211212                lowheight  = highheight
    212213                lowtnudge  = hightnudge
     
    229230                   CALL message( 'nudging', 'PA0364', 1, 2, 0, 6, 0 )
    230231                ENDIF
    231              ENDIF
     232             ENDDO
    232233
    233234!
  • palm/trunk/SOURCE/package_parin.f90

    r1692 r1757  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Added parameter unscheduled_radiation_calls
    2222!
    2323! Former revisions:
     
    161161              emissivity, lambda, lw_radiation, net_radiation, radiation,      &
    162162              radiation_scheme, skip_time_do_radiation, sw_radiation,          &
    163               time_utc_init
     163              time_utc_init, unscheduled_radiation_calls
    164164               
    165165
     
    242242                                  lambda, lw_radiation, net_radiation,         &
    243243                                  radiation_scheme, skip_time_do_radiation,    &
    244                                   sw_radiation, time_utc_init
     244                                  sw_radiation, time_utc_init,                 &
     245                                  unscheduled_radiation_calls
    245246
    246247    NAMELIST /spectra_par/        averaging_interval_sp, comp_spectra_level,   &
  • palm/trunk/SOURCE/radiation_model.f90

    r1710 r1757  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Added parameter unscheduled_radiation_calls. Bugfix: interpolation of sounding
     22! profiles for pressure and temperature above the LES domain.
    2223!
    2324! Former revisions:
     
    164165
    165166
    166     LOGICAL ::  constant_albedo = .FALSE.,       & !< flag parameter indicating whether the albedo may change depending on zenith
    167                 force_radiation_call = .FALSE.,  & !< flag parameter for unscheduled radiation calls
    168                 lw_radiation = .TRUE.,           & !< flag parameter indicing whether longwave radiation shall be calculated
    169                 radiation = .FALSE.,             & !< flag parameter indicating whether the radiation model is used
    170                 sun_up    = .TRUE.,              & !< flag parameter indicating whether the sun is up or down
    171                 sw_radiation = .TRUE.              !< flag parameter indicing whether shortwave radiation shall be calculated
     167    LOGICAL ::  unscheduled_radiation_calls = .TRUE., & !< flag parameter indicating whether additional calls of the radiation code are allowed
     168                constant_albedo = .FALSE.,            & !< flag parameter indicating whether the albedo may change depending on zenith
     169                force_radiation_call = .FALSE.,       & !< flag parameter for unscheduled radiation calls
     170                lw_radiation = .TRUE.,                & !< flag parameter indicating whether longwave radiation shall be calculated
     171                radiation = .FALSE.,                  & !< flag parameter indicating whether the radiation model is used
     172                sun_up    = .TRUE.,                   & !< flag parameter indicating whether the sun is up or down
     173                sw_radiation = .TRUE.                   !< flag parameter indicing whether shortwave radiation shall be calculated
    172174
    173175
     
    372374           rad_sw_out_av, rad_sw_cs_hr, rad_sw_cs_hr_av, rad_sw_hr,            &
    373375           rad_sw_hr_av, sigma_sb, skip_time_do_radiation, sw_radiation,       &
    374            time_radiation, time_utc_init
     376           time_radiation, time_utc_init, unscheduled_radiation_calls
    375377
    376378
     
    12291231       q_snd = 0.0_wp
    12301232
    1231        hyp_snd(nzt+2:nzt_rad) = hyp_snd_tmp(nz_snd_start:nz_snd_end)
    1232        t_snd(nzt+2:nzt_rad)   = t_snd_tmp(nz_snd_start:nz_snd_end)
    1233 
    1234        DEALLOCATE ( hyp_snd_tmp )
    1235        DEALLOCATE ( t_snd_tmp )
     1233       hyp_snd(nzt+2:nzt_rad) = hyp_snd_tmp(nz_snd_start+1:nz_snd_end)
     1234       t_snd(nzt+2:nzt_rad)   = t_snd_tmp(nz_snd_start+1:nz_snd_end)
    12361235
    12371236       nc_stat = NF90_CLOSE( id )
  • palm/trunk/SOURCE/read_3d_binary.f90

    r1710 r1757  
    1919! Current revisions:
    2020! -----------------
    21 !
     21! Bugfix in allocation of radiative heating rates
    2222!
    2323! Former revisions:
     
    898898
    899899                CASE ( 'rad_lw_cs_hr_av' )
    900                    IF ( .NOT. ALLOCATED( rad_lw_out_av ) )  THEN
     900                   IF ( .NOT. ALLOCATED( rad_lw_cs_hr_av ) )  THEN
    901901                      ALLOCATE( rad_lw_cs_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    902902                   ENDIF
     
    962962
    963963                CASE ( 'rad_sw_cs_hr_av' )
    964                    IF ( .NOT. ALLOCATED( rad_sw_out_av ) )  THEN
     964                   IF ( .NOT. ALLOCATED( rad_sw_cs_hr_av ) )  THEN
    965965                      ALLOCATE( rad_sw_cs_hr_av(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    966966                   ENDIF
  • palm/trunk/SOURCE/surface_layer_fluxes.f90

    r1750 r1757  
    1919! Current revisions:
    2020! ------------------
    21 !
     21! Minor fixes.
    2222!
    2323! Former revisions:
     
    358358
    359359!
    360 !--       Invert array and switch sign, then calculate Obukhov length and bulk
    361 !--       Richardson number
    362           z0h_min = MINVAL(z0h)
    363           z0_min  = MINVAL(z0)
     360!--       Save roughness lengths to temporary variables
     361          z0h_min = z0h(nys,nxl)
     362          z0_min  = z0(nys,nxl)
    364363         
    365364!
     
    641640             DO  j = nys, nyn
    642641
    643                 k   = nzb_s_inner(j,i)
    644 
    645642!
    646643!--             If the bulk Richardson number is outside the range of the lookup
     
    10551052             !$acc loop independent
    10561053             DO  j = nysg, nyng
    1057                 e(nzb_s_inner(j,i)+1,j,i) = ( us(j,i) / 0.1_wp )**2
     1054                k = nzb_s_inner(j,i)
     1055                e(k+1,j,i) = ( us(j,i) / 0.1_wp )**2
    10581056!
    10591057!--             As a test: cm = 0.4
    1060 !               e(nzb_s_inner(j,i)+1,j,i) = ( us(j,i) / 0.4_wp )**2
    1061                 e(nzb_s_inner(j,i),j,i)   = e(nzb_s_inner(j,i)+1,j,i)
     1058!               e(k+1,j,i) = ( us(j,i) / 0.4_wp )**2
     1059                e(k,j,i)   = e(k+1,j,i)
    10621060             ENDDO
    10631061          ENDDO
Note: See TracChangeset for help on using the changeset viewer.