Changeset 4101 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jul 17, 2019 3:14:26 PM (5 years ago)
Author:
gronemeier
Message:

timestep.f90:

  • consider 2*Km within diffusion criterion as Km is considered twice within the diffusion of e,
  • in RANS mode, instead of considering each wind component individually use the wind speed of 3d wind vector in CFL criterion
  • do not limit the increase of dt based on its previous value in RANS mode

other:

  • remove dt_old
Location:
palm/trunk/SOURCE
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/modules.f90

    r4079 r4101  
    2525! -----------------
    2626! $Id$
     27! remove old_dt
     28!
     29! 4079 2019-07-09 18:04:41Z suehring
    2730! + monotonic_limiter_z
    2831!
     
    14921495    REAL(wp) ::  multi_agent_system_end   = 9999999.9_wp       !< namelist parameter (see documentation)
    14931496    REAL(wp) ::  multi_agent_system_start = 0.0_wp             !< namelist parameter (see documentation)
    1494     REAL(wp) ::  old_dt = 1.0E-10_wp                           !< length of previous timestep
    14951497    REAL(wp) ::  omega = 7.29212E-5_wp                         !< namelist parameter
    14961498    REAL(wp) ::  omega_sor = 1.8_wp                            !< namelist parameter
  • palm/trunk/SOURCE/read_restart_data_mod.f90

    r4039 r4101  
    2525! -----------------
    2626! $Id$
     27! remove old_dt
     28!
     29! 4039 2019-06-18 10:32:41Z suehring
    2730! input of uu_av, vv_av, ww_av added
    2831!
     
    538541             CASE ( 'ocean_mode' )
    539542                READ ( 13 )  ocean_mode
    540              CASE ( 'old_dt' )
    541                 READ ( 13 )  old_dt
    542543             CASE ( 'omega' )
    543544                READ ( 13 )  omega
  • palm/trunk/SOURCE/timestep.f90

    r3658 r4101  
    2525! -----------------
    2626! $Id$
     27! - consider 2*Km within diffusion criterion as Km is considered twice within
     28!   the diffusion of e,
     29! - in RANS mode, instead of considering each wind component individually use
     30!   the wind speed of 3d wind vector in CFL criterion
     31! - do not limit the increase of dt based on its previous value in RANS mode
     32!
     33! 3658 2019-01-07 20:28:54Z knoop
    2734! OpenACC port for SPEC
    2835!
     
    146153    USE control_parameters,                                                    &
    147154        ONLY:  cfl_factor, coupling_mode, dt_3d, dt_fixed, dt_max,             &
    148                galilei_transformation, old_dt, message_string, rans_mode,      &
     155               galilei_transformation, message_string, rans_mode,              &
    149156               stop_dt, terminate_coupled, terminate_coupled_remote,           &
    150157               timestep_reason, u_gtrans, use_ug_for_galilei_tr, v_gtrans
     
    218225    !$ACC HOST(kh(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) &
    219226    !$ACC HOST(km(nzb:nzt+1,nysg:nyng,nxlg:nxrg))
    220 
    221 !
    222 !--    Save former time step as reference
    223        old_dt = dt_3d
    224227
    225228!
     
    284287!
    285288!--    Variable time step:
    286 !--    Calculate the maximum time step according to the CFL-criterion,
    287 !--    individually for each velocity component
     289!--    Calculate the maximum time step according to the CFL-criterion
    288290       dt_u_l = 999999.9_wp
    289291       dt_v_l = 999999.9_wp
    290292       dt_w_l = 999999.9_wp
    291        !$ACC PARALLEL LOOP COLLAPSE(3) PRIVATE(i,j,k) &
    292        !$ACC COPY(dt_u_l, dt_v_l, dt_w_l, u_stokes_zu, v_stokes_zu) &
    293        !$ACC REDUCTION(MIN: dt_u_l, dt_v_l, dt_w_l) &
    294        !$ACC PRESENT(u, v, w, dzu)
    295        DO  i = nxl, nxr
    296           DO  j = nys, nyn
    297              DO  k = nzb+1, nzt
    298                 dt_u_l = MIN( dt_u_l, ( dx     /                               &
    299                                  ( ABS( u(k,j,i) - u_gtrans + u_stokes_zu(k) ) &
    300                                    + 1.0E-10_wp ) ) )
    301                 dt_v_l = MIN( dt_v_l, ( dy     /                               &
    302                                  ( ABS( v(k,j,i) - v_gtrans + v_stokes_zu(k) ) &
    303                                    + 1.0E-10_wp ) ) )
    304                 dt_w_l = MIN( dt_w_l, ( dzu(k) /                               &
    305                                  ( ABS( w(k,j,i) )            + 1.0E-10_wp ) ) )
     293
     294       IF ( .NOT. rans_mode )  THEN
     295!
     296!--       Consider each velocity component individually
     297
     298          !$ACC PARALLEL LOOP COLLAPSE(3) PRIVATE(i,j,k) &
     299          !$ACC COPY(dt_u_l, dt_v_l, dt_w_l, u_stokes_zu, v_stokes_zu) &
     300          !$ACC REDUCTION(MIN: dt_u_l, dt_v_l, dt_w_l) &
     301          !$ACC PRESENT(u, v, w, dzu)
     302          DO  i = nxl, nxr
     303             DO  j = nys, nyn
     304                DO  k = nzb+1, nzt
     305                   dt_u_l = MIN( dt_u_l, ( dx     /                               &
     306                                    ( ABS( u(k,j,i) - u_gtrans + u_stokes_zu(k) ) &
     307                                      + 1.0E-10_wp ) ) )
     308                   dt_v_l = MIN( dt_v_l, ( dy     /                               &
     309                                    ( ABS( v(k,j,i) - v_gtrans + v_stokes_zu(k) ) &
     310                                      + 1.0E-10_wp ) ) )
     311                   dt_w_l = MIN( dt_w_l, ( dzu(k) /                               &
     312                                    ( ABS( w(k,j,i) )            + 1.0E-10_wp ) ) )
     313                ENDDO
    306314             ENDDO
    307315          ENDDO
    308        ENDDO
     316
     317       ELSE
     318!
     319!--       Consider the wind speed at the scalar-grid point
     320!--       !> @note considering the wind speed instead of each individual wind
     321!--       !>       component is only a workaround so far. This might has to be
     322!--       !>       changed in the future.
     323
     324          !$ACC PARALLEL LOOP COLLAPSE(3) PRIVATE(i,j,k) &
     325          !$ACC COPY(dt_u_l, u_stokes_zu, v_stokes_zu) &
     326          !$ACC REDUCTION(MIN: dt_u_l) &
     327          !$ACC PRESENT(u, v, w, dzu)
     328          DO  i = nxl, nxr
     329             DO  j = nys, nyn
     330                DO  k = nzb+1, nzt
     331                   dt_u_l = MIN( dt_u_l, ( MIN( dx, dy, dzu(k) ) / ( &
     332                      SQRT(  ( 0.5 * ( u(k,j,i) + u(k,j,i+1) ) - u_gtrans + u_stokes_zu(k) )**2   &
     333                           + ( 0.5 * ( v(k,j,i) + v(k,j+1,i) ) - v_gtrans + v_stokes_zu(k) )**2   &
     334                           + ( 0.5 * ( w(k,j,i) + w(k-1,j,i) )                             )**2 ) &
     335                      + 1.0E-10_wp ) ) )
     336                ENDDO
     337             ENDDO
     338          ENDDO
     339         
     340          dt_v_l = dt_u_l
     341          dt_w_l = dt_u_l
     342
     343       ENDIF
    309344
    310345#if defined( __parallel )
     
    342377          DO  j = nys, nyn
    343378             DO  k = nzb+1, nzt
    344                 dt_diff_l = MIN( dt_diff_l, dxyz2_min(k) /                     &
    345                                     ( MAX( kh(k,j,i), ABS( km(k,j,i) ) )       &
     379                dt_diff_l = MIN( dt_diff_l,                                       &
     380                                 dxyz2_min(k) /                                   &
     381                                    ( MAX( kh(k,j,i), 2.0_wp * ABS( km(k,j,i) ) ) &
    346382                                      + 1E-20_wp ) )
    347383             ENDDO
     
    363399       dt_3d = cfl_factor * MIN( dt_diff, dt_u, dt_v, dt_w, dt_precipitation )
    364400       dt_3d = MIN( dt_3d, dt_max )
    365 !
    366 !--    In RANS mode, the time step must not increase by more than a factor of 2
    367        IF ( rans_mode )  dt_3d = MIN( dt_3d, dt_max, 2.0_wp * old_dt )
    368401
    369402!
     
    390423          WRITE( message_string, * ) 'Time step has reached minimum limit.',   &
    391424               '&dt              = ', dt_3d, ' s  Simulation is terminated.',  &
    392                '&old_dt          = ', old_dt, ' s',                            &
    393425               '&dt_u            = ', dt_u, ' s',                              &
    394426               '&dt_v            = ', dt_v, ' s',                              &
  • palm/trunk/SOURCE/vertical_nesting_mod.f90

    r3802 r4101  
    2626! -----------------
    2727! $Id$
     28! remove old_dt
     29!
     30! 3802 2019-03-17 13:33:42Z raasch
    2831! unused subroutines commented out
    2932!
     
    39433946#if defined( __parallel )
    39443947         USE control_parameters,                                                    &
    3945              ONLY:  coupling_mode, dt_3d, old_dt
     3948             ONLY:  coupling_mode, dt_3d
    39463949     
    39473950         USE interfaces
     
    39773980!-- Identical timestep for coarse and fine grids
    39783981          dt_3d = MIN( dtc, dtf )
    3979           !> @fixme setting old_dt might be obsolete at this point
    3980           !>   Due to changes in timestep routine, setting of old_dt might be
    3981           !>   not necessary any more at this point. However, could not be
    3982           !>   tested so far.
    3983           !>   2018-05-18, gronemeier
    3984           old_dt = dt_3d
    39853982#endif
    39863983       END SUBROUTINE vnest_timestep_sync
  • palm/trunk/SOURCE/write_restart_data_mod.f90

    r4039 r4101  
    2525! -----------------
    2626! $Id$
     27! remove old_dt
     28!
     29! 4039 2019-06-18 10:32:41Z suehring
    2730! Modularize diagnostic output
    2831!
     
    502505       WRITE ( 14 )  ocean_mode
    503506
    504        CALL wrd_write_string( 'old_dt' )
    505        WRITE ( 14 )  old_dt
    506 
    507507       CALL wrd_write_string( 'omega' )
    508508       WRITE ( 14 )  omega
Note: See TracChangeset for help on using the changeset viewer.