Changeset 3647 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jan 2, 2019 2:10:44 PM (6 years ago)
Author:
kanani
Message:

Bugfix: add time_since_reference_point to IF clause for data_output calls (time_integration)

File:
1 edited

Legend:

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

    r3646 r3647  
    1515! PALM. If not, see <http://www.gnu.org/licenses/>.
    1616!
    17 ! Copyright 1997-2018 Leibniz Universitaet Hannover
     17! Copyright 1997-2019 Leibniz Universitaet Hannover
    1818!------------------------------------------------------------------------------!
    1919!
     
    2525! -----------------
    2626! $Id$
     27! Bugfix: add time_since_reference_point to IF clause for data_output calls
     28! (otherwise skip_time_* values don't come into affect with dt_do* = 0.0).
     29! Clean up indoor_model and biometeorology model call.
     30!
     31! 3646 2018-12-28 17:58:49Z kanani
    2732! Bugfix: use time_since_reference_point instead of simulated_time where
    2833! required (relevant when using wall/soil spinup)
     
    14011406!--    through wall, etc.
    14021407!--    dt_indoor steers the frequency of the indoor model calculations
    1403        IF (       indoor_model                                                    &
    1404             .AND. intermediate_timestep_count == intermediate_timestep_count_max  &
    1405             .AND. time_since_reference_point > skip_time_do_indoor )  THEN
     1408       IF ( indoor_model )  THEN
    14061409
    14071410          time_indoor = time_indoor + dt_3d
     
    15031506!
    15041507!--    Biometeorology calculation of stationary thermal indices
    1505        IF ( biometeorology  .AND.  time_do3d >= dt_do3d )  THEN
     1508!--    Todo (kanani): biometeorology needs own time_... treatment.
     1509!--                   It might be that time_do2d_xy differs from time_do3d,
     1510!--                   and then we might get trouble with the biomet output,
     1511!--                   because we can have 2d and/or 3d biomet output!!
     1512       IF (         biometeorology  &
     1513             .AND.  ( ( time_do3d >= dt_do3d  .AND.  time_since_reference_point >= skip_time_do3d )          &
     1514                      .OR.                                                                                   &
     1515                      ( time_do2d_xy >= dt_do2d_xy  .AND.  time_since_reference_point >= skip_time_do2d_xy ) &
     1516                    ) )  THEN
    15061517!
    15071518!--       If required, do thermal comfort calculations
     
    15691580!--    Sum-up 3d-arrays for later output of time-averaged 2d/3d/masked data
    15701581       IF ( averaging_interval /= 0.0_wp  .AND.                                &
    1571             ( dt_data_output_av - time_do_av ) <= averaging_interval  .AND. &
    1572             time_since_reference_point >= skip_time_data_output_av )                    &
     1582            ( dt_data_output_av - time_do_av ) <= averaging_interval  .AND.    &
     1583            time_since_reference_point >= skip_time_data_output_av )           &
    15731584       THEN
    15741585          time_do_sla = time_do_sla + dt_3d
     
    15821593!--    Average surface data
    15831594       IF ( surface_data_output )  THEN
    1584           IF ( averaging_interval_surf /= 0.0_wp  .AND.                        &
    1585                ( dt_dosurf_av - time_dosurf_av ) <= averaging_interval_surf    &
    1586           .AND.  time_since_reference_point >= skip_time_dosurf_av )  THEN
     1595          IF (         averaging_interval_surf /= 0.0_wp                               &
     1596                .AND.  ( dt_dosurf_av - time_dosurf_av ) <= averaging_interval_surf    &
     1597                .AND.  time_since_reference_point >= skip_time_dosurf_av )  THEN
    15871598             IF ( time_dosurf_av >= dt_averaging_input )  THEN       
    15881599                CALL surface_output_averaging
     
    16261637!
    16271638!--    Graphic output for PROFIL
    1628        IF ( time_dopr >= dt_dopr )  THEN
     1639       IF (        time_dopr >= dt_dopr                                     &
     1640            .AND.  time_since_reference_point >= skip_time_dopr )  THEN
    16291641          IF ( dopr_n /= 0 )  CALL data_output_profiles
    16301642          time_dopr = MOD( time_dopr, MAX( dt_dopr, dt_3d ) )
     
    16421654!--    Output of spectra (formatted for use with PROFIL), in case of no
    16431655!--    time averaging, spectra has to be calculated before
    1644        IF ( time_dosp >= dt_dosp )  THEN
     1656       IF (         time_dosp >= dt_dosp                                     &
     1657             .AND.  time_since_reference_point >= skip_time_dosp )  THEN
    16451658          IF ( average_count_sp == 0 )  CALL calc_spectra
    16461659          CALL data_output_spectra
     
    16501663!
    16511664!--    2d-data output (cross-sections)
    1652        IF ( time_do2d_xy >= dt_do2d_xy )  THEN
     1665       IF (         time_do2d_xy >= dt_do2d_xy                               &
     1666             .AND.  time_since_reference_point >= skip_time_do2d_xy )  THEN
    16531667          CALL data_output_2d( 'xy', 0 )
    16541668          time_do2d_xy = MOD( time_do2d_xy, MAX( dt_do2d_xy, dt_3d ) )
    16551669       ENDIF
    1656        IF ( time_do2d_xz >= dt_do2d_xz )  THEN
     1670       IF (         time_do2d_xz >= dt_do2d_xz                               &
     1671             .AND.  time_since_reference_point >= skip_time_do2d_xz )  THEN
    16571672          CALL data_output_2d( 'xz', 0 )
    16581673          time_do2d_xz = MOD( time_do2d_xz, MAX( dt_do2d_xz, dt_3d ) )
    16591674       ENDIF
    1660        IF ( time_do2d_yz >= dt_do2d_yz )  THEN
     1675       IF (         time_do2d_yz >= dt_do2d_yz                               &
     1676             .AND.  time_since_reference_point >= skip_time_do2d_yz )  THEN
    16611677          CALL data_output_2d( 'yz', 0 )
    16621678          time_do2d_yz = MOD( time_do2d_yz, MAX( dt_do2d_yz, dt_3d ) )
     
    16651681!
    16661682!--    3d-data output (volume data)
    1667        IF ( time_do3d >= dt_do3d )  THEN
     1683       IF (         time_do3d >= dt_do3d                                     &
     1684             .AND.  time_since_reference_point >= skip_time_do3d )  THEN
    16681685          CALL data_output_3d( 0 )
    16691686          time_do3d = MOD( time_do3d, MAX( dt_do3d, dt_3d ) )
     
    16731690!--    Masked data output
    16741691       DO  mid = 1, masks
    1675           IF ( time_domask(mid) >= dt_domask(mid) )  THEN
     1692          IF (         time_domask(mid) >= dt_domask(mid)                          &
     1693                .AND.  time_since_reference_point >= skip_time_domask(mid) )  THEN
    16761694             CALL data_output_mask( 0 )
    1677              time_domask(mid) = MOD( time_domask(mid),  &
     1695             time_domask(mid) = MOD( time_domask(mid),                             &
    16781696                                     MAX( dt_domask(mid), dt_3d ) )
    16791697          ENDIF
     
    16821700!
    16831701!--    Output of time-averaged 2d/3d/masked data
    1684        IF ( time_do_av >= dt_data_output_av )  THEN
     1702       IF (         time_do_av >= dt_data_output_av                                &
     1703             .AND.  time_since_reference_point >= skip_time_data_output_av )  THEN
    16851704          CALL average_3d_data
    16861705          CALL data_output_2d( 'xy', 1 )
     
    16961715!--    Output of surface data, instantaneous and averaged data
    16971716       IF ( surface_data_output )  THEN
    1698           IF ( time_dosurf >= dt_dosurf )  THEN
     1717          IF (         time_dosurf >= dt_dosurf                                    &
     1718                .AND.  time_since_reference_point >= skip_time_dosurf )  THEN
    16991719             CALL surface_output( 0 )
    17001720             time_dosurf = MOD( time_dosurf, MAX( dt_dosurf, dt_3d ) )
    17011721          ENDIF
    1702           IF ( time_dosurf_av >= dt_dosurf_av )  THEN
     1722          IF (         time_dosurf_av >= dt_dosurf_av                              &
     1723                .AND.  time_since_reference_point >= skip_time_dosurf_av )  THEN
    17031724             CALL surface_output( 1 )
    17041725             time_dosurf_av = MOD( time_dosurf_av, MAX( dt_dosurf_av, dt_3d ) )
     
    17091730!--    Output of particle time series
    17101731       IF ( particle_advection )  THEN
    1711           IF ( time_dopts >= dt_dopts  .OR. &
     1732          IF ( time_dopts >= dt_dopts  .OR.                                    &
    17121733               ( time_since_reference_point >= particle_advection_start  .AND. &
    17131734                 first_call_lpm ) )  THEN
Note: See TracChangeset for help on using the changeset viewer.