- Timestamp:
- Jan 2, 2019 2:10:44 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/time_integration.f90
r3646 r3647 15 15 ! PALM. If not, see <http://www.gnu.org/licenses/>. 16 16 ! 17 ! Copyright 1997-201 8Leibniz Universitaet Hannover17 ! Copyright 1997-2019 Leibniz Universitaet Hannover 18 18 !------------------------------------------------------------------------------! 19 19 ! … … 25 25 ! ----------------- 26 26 ! $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 27 32 ! Bugfix: use time_since_reference_point instead of simulated_time where 28 33 ! required (relevant when using wall/soil spinup) … … 1401 1406 !-- through wall, etc. 1402 1407 !-- 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 1406 1409 1407 1410 time_indoor = time_indoor + dt_3d … … 1503 1506 ! 1504 1507 !-- 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 1506 1517 ! 1507 1518 !-- If required, do thermal comfort calculations … … 1569 1580 !-- Sum-up 3d-arrays for later output of time-averaged 2d/3d/masked data 1570 1581 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 ) & 1573 1584 THEN 1574 1585 time_do_sla = time_do_sla + dt_3d … … 1582 1593 !-- Average surface data 1583 1594 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 ) THEN1595 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 1587 1598 IF ( time_dosurf_av >= dt_averaging_input ) THEN 1588 1599 CALL surface_output_averaging … … 1626 1637 ! 1627 1638 !-- 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 1629 1641 IF ( dopr_n /= 0 ) CALL data_output_profiles 1630 1642 time_dopr = MOD( time_dopr, MAX( dt_dopr, dt_3d ) ) … … 1642 1654 !-- Output of spectra (formatted for use with PROFIL), in case of no 1643 1655 !-- 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 1645 1658 IF ( average_count_sp == 0 ) CALL calc_spectra 1646 1659 CALL data_output_spectra … … 1650 1663 ! 1651 1664 !-- 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 1653 1667 CALL data_output_2d( 'xy', 0 ) 1654 1668 time_do2d_xy = MOD( time_do2d_xy, MAX( dt_do2d_xy, dt_3d ) ) 1655 1669 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 1657 1672 CALL data_output_2d( 'xz', 0 ) 1658 1673 time_do2d_xz = MOD( time_do2d_xz, MAX( dt_do2d_xz, dt_3d ) ) 1659 1674 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 1661 1677 CALL data_output_2d( 'yz', 0 ) 1662 1678 time_do2d_yz = MOD( time_do2d_yz, MAX( dt_do2d_yz, dt_3d ) ) … … 1665 1681 ! 1666 1682 !-- 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 1668 1685 CALL data_output_3d( 0 ) 1669 1686 time_do3d = MOD( time_do3d, MAX( dt_do3d, dt_3d ) ) … … 1673 1690 !-- Masked data output 1674 1691 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 1676 1694 CALL data_output_mask( 0 ) 1677 time_domask(mid) = MOD( time_domask(mid), &1695 time_domask(mid) = MOD( time_domask(mid), & 1678 1696 MAX( dt_domask(mid), dt_3d ) ) 1679 1697 ENDIF … … 1682 1700 ! 1683 1701 !-- 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 1685 1704 CALL average_3d_data 1686 1705 CALL data_output_2d( 'xy', 1 ) … … 1696 1715 !-- Output of surface data, instantaneous and averaged data 1697 1716 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 1699 1719 CALL surface_output( 0 ) 1700 1720 time_dosurf = MOD( time_dosurf, MAX( dt_dosurf, dt_3d ) ) 1701 1721 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 1703 1724 CALL surface_output( 1 ) 1704 1725 time_dosurf_av = MOD( time_dosurf_av, MAX( dt_dosurf_av, dt_3d ) ) … … 1709 1730 !-- Output of particle time series 1710 1731 IF ( particle_advection ) THEN 1711 IF ( time_dopts >= dt_dopts .OR. &1732 IF ( time_dopts >= dt_dopts .OR. & 1712 1733 ( time_since_reference_point >= particle_advection_start .AND. & 1713 1734 first_call_lpm ) ) THEN
Note: See TracChangeset
for help on using the changeset viewer.