Changeset 4593 for palm/trunk/SOURCE/surface_mod.f90
- Timestamp:
- Jul 9, 2020 12:48:18 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/surface_mod.f90
r4586 r4593 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Add arrays for pre-calculated ln(z/z0) 28 ! 29 ! 4586 2020-07-01 16:16:43Z gronemeier 27 30 ! renamed Richardson flux number into gradient Richardson number (1D model) 28 31 ! … … 248 251 249 252 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: css !< scaling parameter chemical species 253 ! 254 !-- Pre-defined arrays for ln(z/z0) 255 REAL(wp), DIMENSION(:), ALLOCATABLE :: ln_z_z0 !< ln(z/z0) 256 REAL(wp), DIMENSION(:), ALLOCATABLE :: ln_z_z0h !< ln(z/z0h) 257 REAL(wp), DIMENSION(:), ALLOCATABLE :: ln_z_z0q !< ln(z/z0q) 250 258 ! 251 259 !-- Define arrays for surface fluxes … … 1281 1289 DEALLOCATE ( surfaces%uvw_abs ) 1282 1290 ! 1291 !-- Pre-calculated ln(z/z0) 1292 DEALLOCATE ( surfaces%ln_z_z0 ) 1293 DEALLOCATE ( surfaces%ln_z_z0h ) 1294 DEALLOCATE ( surfaces%ln_z_z0q ) 1295 ! 1283 1296 !-- Roughness 1284 1297 DEALLOCATE ( surfaces%z0 ) … … 1411 1424 ALLOCATE ( surfaces%uvw_abs(1:surfaces%ns) ) 1412 1425 ! 1426 !-- Precalculated ln(z/z0) 1427 ALLOCATE( surfaces%ln_z_z0(1:surfaces%ns) ) 1428 ALLOCATE( surfaces%ln_z_z0h(1:surfaces%ns) ) 1429 ALLOCATE( surfaces%ln_z_z0q(1:surfaces%ns) ) 1430 ! 1413 1431 !-- Roughness 1414 1432 ALLOCATE ( surfaces%z0(1:surfaces%ns) ) … … 1520 1538 !$ACC DELETE(surfaces%z_mo(1:surfaces%ns)) & 1521 1539 !$ACC DELETE(surfaces%uvw_abs(1:surfaces%ns)) & 1540 !$ACC DELETE(surfaces%ln_z_z0(1:surfaces%ns)) & 1541 !$ACC DELETE(surfaces%ln_z_z0h(1:surfaces%ns)) & 1542 !$ACC DELETE(surfaces%ln_z_z0q(1:surfaces%ns)) & 1522 1543 !$ACC DELETE(surfaces%z0(1:surfaces%ns)) & 1523 1544 !$ACC COPYOUT(surfaces%us(1:surfaces%ns)) & … … 1561 1582 !$ACC COPYIN(surfaces%z_mo(1:surfaces%ns)) & 1562 1583 !$ACC COPYIN(surfaces%uvw_abs(1:surfaces%ns)) & 1584 !$ACC COPYIN(surfaces%ln_z_z0(1:surfaces%ns)) & 1585 !$ACC COPYIN(surfaces%ln_z_z0h(1:surfaces%ns)) & 1586 !$ACC COPYIN(surfaces%ln_z_z0q(1:surfaces%ns)) & 1563 1587 !$ACC COPYIN(surfaces%z0(1:surfaces%ns)) & 1564 1588 !$ACC COPYIN(surfaces%us(1:surfaces%ns)) & … … 1830 1854 DEALLOCATE ( surfaces%uvw_abs ) 1831 1855 ! 1856 !-- Precalculated ln(z/z0) 1857 DEALLOCATE ( surfaces%ln_z_z0 ) 1858 DEALLOCATE ( surfaces%ln_z_z0h ) 1859 DEALLOCATE ( surfaces%ln_z_z0q ) 1860 ! 1832 1861 !-- Roughness 1833 1862 DEALLOCATE ( surfaces%z0 ) 1834 1863 DEALLOCATE ( surfaces%z0h ) 1835 1864 DEALLOCATE ( surfaces%z0q ) 1836 1837 1865 ! 1838 1866 !-- Friction velocity … … 1879 1907 !-- Scaling parameter (cs*) and surface flux of chemical species 1880 1908 IF ( air_chemistry ) THEN 1881 1882 1909 DEALLOCATE ( surfaces%css ) 1910 DEALLOCATE ( surfaces%cssws ) 1883 1911 ENDIF 1884 1912 ! … … 1958 1986 ALLOCATE ( surfaces%uvw_abs(1:surfaces%ns) ) 1959 1987 ! 1988 !-- Precalculated ln(z/z0) 1989 ALLOCATE( surfaces%ln_z_z0(1:surfaces%ns) ) 1990 ALLOCATE( surfaces%ln_z_z0h(1:surfaces%ns) ) 1991 ALLOCATE( surfaces%ln_z_z0q(1:surfaces%ns) ) 1992 ! 1960 1993 !-- Roughness 1961 1994 ALLOCATE ( surfaces%z0(1:surfaces%ns) ) … … 2007 2040 !-- Scaling parameter (cs*) and surface flux of chemical species 2008 2041 IF ( air_chemistry ) THEN 2009 2010 2042 ALLOCATE ( surfaces%css(1:nvar,1:surfaces%ns) ) 2043 ALLOCATE ( surfaces%cssws(1:nvar,1:surfaces%ns) ) 2011 2044 ENDIF 2012 2045 ! … … 2062 2095 !$ACC DELETE(surfaces%k(1:surfaces%ns)) & 2063 2096 !$ACC DELETE(surfaces%uvw_abs(1:surfaces%ns)) & 2097 !$ACC DELETE(surfaces%ln_z_z0(1:surfaces%ns) ) & 2098 !$ACC DELETE(surfaces%ln_z_z0h(1:surfaces%ns) ) & 2099 !$ACC DELETE(surfaces%ln_z_z0q(1:surfaces%ns) ) & 2064 2100 !$ACC DELETE(surfaces%z0(1:surfaces%ns)) & 2065 2101 !$ACC DELETE(surfaces%rib(1:surfaces%ns)) & … … 2094 2130 !$ACC COPYIN(surfaces%k(1:surfaces%ns)) & 2095 2131 !$ACC COPYIN(surfaces%uvw_abs(1:surfaces%ns)) & 2132 !$ACC COPYIN(surfaces%ln_z_z0(1:surfaces%ns) ) & 2133 !$ACC COPYIN(surfaces%ln_z_z0h(1:surfaces%ns) ) & 2134 !$ACC COPYIN(surfaces%ln_z_z0q(1:surfaces%ns) ) & 2096 2135 !$ACC COPYIN(surfaces%z0(1:surfaces%ns)) & 2097 2136 !$ACC COPYIN(surfaces%rib(1:surfaces%ns)) & … … 2569 2608 surf%rib(num_h) = 0.0_wp 2570 2609 surf%uvw_abs(num_h) = 0.0_wp 2610 ! 2611 !-- Initialize ln(z/z0) 2612 surf%ln_z_z0(num_h) = LOG( surf%z_mo(num_h) / surf%z0(num_h) ) 2613 surf%ln_z_z0h(num_h) = LOG( surf%z_mo(num_h) / surf%z0h(num_h) ) 2614 surf%ln_z_z0q(num_h) = LOG( surf%z_mo(num_h) / surf%z0q(num_h) ) 2571 2615 2572 2616 IF ( .NOT. constant_diffusion ) THEN … … 2871 2915 2872 2916 surf%us(num_v) = 0.0_wp 2917 ! 2918 !-- Initialize ln(z/z0) 2919 surf%ln_z_z0(num_v) = LOG( surf%z_mo(num_v) / surf%z0(num_v) ) 2920 surf%ln_z_z0h(num_v) = LOG( surf%z_mo(num_v) / surf%z0h(num_v) ) 2921 surf%ln_z_z0q(num_v) = LOG( surf%z_mo(num_v) / surf%z0q(num_v) ) 2873 2922 ! 2874 2923 !-- If required, initialize Obukhov length … … 5106 5155 ENDIF 5107 5156 IF ( INDEX( restart_string(1:length), '%cssws' ) /= 0 ) THEN 5108 IF ( ALLOCATED( surf_target%cssws ) .AND. ALLOCATED( surf_file%cssws 5157 IF ( ALLOCATED( surf_target%cssws ) .AND. ALLOCATED( surf_file%cssws ) ) THEN 5109 5158 DO lsp = 1, nvar 5110 5159 surf_target%cssws(lsp,m_target) = surf_file%cssws(lsp,m_file) … … 5507 5556 ! 5508 5557 !-- Redistribute surface elements on its respective type. 5509 5510 5558 DO l = 0, 2 5511 5559 CALL restore_surface_elements( surf_def_h(l), surf_h(l) ) 5512 CALL restore_surface_elements( surf_lsm_h, surf_h(l) )5513 CALL restore_surface_elements( surf_usm_h, surf_h(l) )5514 5560 ENDDO 5561 CALL restore_surface_elements( surf_lsm_h, surf_h(0) ) 5562 CALL restore_surface_elements( surf_usm_h, surf_h(0) ) 5515 5563 5516 5564 DO l = 0, 3
Note: See TracChangeset
for help on using the changeset viewer.