Changeset 129 for palm/trunk/SOURCE
- Timestamp:
- Oct 30, 2007 12:12:24 PM (17 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/CURRENT_MODIFICATIONS
r128 r129 19 19 Status of 3D-volume NetCDF data file only depends on switch netcdf_64bit_3d (check_open) 20 20 21 check_open 21 prognostic_equations include the respective wall_*flux in the parameter list of 22 calls of diffusion_s. Same as before, only the values of wall_heatflux(0:4) 23 can be assigned. At present, wall_humidityflux, wall_qflux, wall_salinityflux, 24 and wall_scalarflux are kept zero. diffusion_s uses the respective wall_*flux 25 instead of wall_heatflux. This update serves two purposes: 26 - it avoids errors in calculations with humidity/scalar/salinity and prescribed 27 non-zero wall_heatflux, 28 - it prepares PALM for a possible assignment of wall fluxes of 29 humidity/scalar/salinity in a future release. 30 31 check_open, diffusion_s, modules, prognostic_equations 22 32 23 33 … … 37 47 Bugfix: wavenumber calculation for even nx in routines maketri (poisfft) 38 48 39 advec_particles, check_parameters, combine_plot_fields, init_ocean, poisfft, production_e 49 Bugfix: assignment of fluxes at walls 50 51 advec_particles, check_parameters, combine_plot_fields, diffusion_s, init_ocean, poisfft, production_e -
palm/trunk/SOURCE/diffusion_s.f90
r39 r129 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! replace wall_heatflux by wall_s_flux that is now included in the parameter 7 ! list, bugfix for assignment of fluxes at walls 7 8 ! 8 9 ! Former revisions: … … 45 46 ! Call for all grid points 46 47 !------------------------------------------------------------------------------! 47 SUBROUTINE diffusion_s( ddzu, ddzw, kh, s, s_flux_b, s_flux_t, tend ) 48 SUBROUTINE diffusion_s( ddzu, ddzw, kh, s, s_flux_b, s_flux_t, & 49 wall_s_flux, tend ) 48 50 49 51 USE control_parameters … … 57 59 REAL :: ddzu(1:nzt+1), ddzw(1:nzt+1) 58 60 REAL :: tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) 61 REAL :: wall_s_flux(0:4) 59 62 REAL, DIMENSION(:,:), POINTER :: s_flux_b, s_flux_t 60 63 REAL, DIMENSION(:,:,:), POINTER :: kh, s … … 86 89 + 0.5 * ( fwxp(j,i) * & 87 90 ( kh(k,j,i) + kh(k,j,i+1) ) * ( s(k,j,i+1)-s(k,j,i) ) & 88 - ( 1.0 - fwxp(j,i) ) * wall_heatflux(1)&91 + ( 1.0 - fwxp(j,i) ) * wall_s_flux(1) & 89 92 -fwxm(j,i) * & 90 93 ( kh(k,j,i) + kh(k,j,i-1) ) * ( s(k,j,i)-s(k,j,i-1) ) & 91 + ( 1.0 - fwxm(j,i) ) * wall_ heatflux(3)&94 + ( 1.0 - fwxm(j,i) ) * wall_s_flux(2) & 92 95 ) * ddx2 & 93 96 + 0.5 * ( fwyp(j,i) * & 94 97 ( kh(k,j,i) + kh(k,j+1,i) ) * ( s(k,j+1,i)-s(k,j,i) ) & 95 - ( 1.0 - fwyp(j,i) ) * wall_heatflux(2)&98 + ( 1.0 - fwyp(j,i) ) * wall_s_flux(3) & 96 99 -fwym(j,i) * & 97 100 ( kh(k,j,i) + kh(k,j-1,i) ) * ( s(k,j,i)-s(k,j-1,i) ) & 98 + ( 1.0 - fwym(j,i) ) * wall_ heatflux(4)&101 + ( 1.0 - fwym(j,i) ) * wall_s_flux(4) & 99 102 ) * ddy2 100 103 ENDDO … … 156 159 !------------------------------------------------------------------------------! 157 160 SUBROUTINE diffusion_s_ij( i, j, ddzu, ddzw, kh, s, s_flux_b, s_flux_t, & 158 tend )161 wall_s_flux, tend ) 159 162 160 163 USE control_parameters … … 168 171 REAL :: ddzu(1:nzt+1), ddzw(1:nzt+1) 169 172 REAL :: tend(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) 173 REAL :: wall_s_flux(0:4) 170 174 REAL, DIMENSION(:,:), POINTER :: s_flux_b, s_flux_t 171 175 REAL, DIMENSION(:,:,:), POINTER :: kh, s … … 195 199 + 0.5 * ( fwxp(j,i) * & 196 200 ( kh(k,j,i) + kh(k,j,i+1) ) * ( s(k,j,i+1)-s(k,j,i) ) & 197 - ( 1.0 - fwxp(j,i) ) * wall_heatflux(1)&201 + ( 1.0 - fwxp(j,i) ) * wall_s_flux(1) & 198 202 -fwxm(j,i) * & 199 203 ( kh(k,j,i) + kh(k,j,i-1) ) * ( s(k,j,i)-s(k,j,i-1) ) & 200 + ( 1.0 - fwxm(j,i) ) * wall_ heatflux(3)&204 + ( 1.0 - fwxm(j,i) ) * wall_s_flux(2) & 201 205 ) * ddx2 & 202 206 + 0.5 * ( fwyp(j,i) * & 203 207 ( kh(k,j,i) + kh(k,j+1,i) ) * ( s(k,j+1,i)-s(k,j,i) ) & 204 - ( 1.0 - fwyp(j,i) ) * wall_heatflux(2)&208 + ( 1.0 - fwyp(j,i) ) * wall_s_flux(3) & 205 209 -fwym(j,i) * & 206 210 ( kh(k,j,i) + kh(k,j-1,i) ) * ( s(k,j,i)-s(k,j-1,i) ) & 207 + ( 1.0 - fwym(j,i) ) * wall_ heatflux(4)&211 + ( 1.0 - fwym(j,i) ) * wall_s_flux(4) & 208 212 ) * ddy2 209 213 ENDDO -
palm/trunk/SOURCE/modules.f90
r116 r129 6 6 ! ----------------- 7 7 ! +dt_sort_particles, time_sort_particles, flags, wall_flags_1..10 8 ! wall_humidityflux(0:4), wall_qflux(0:4), wall_salinityflux(0:4), 9 ! wall_scalarflux(0:4) 8 10 ! 9 11 ! Former revisions: … … 431 433 vg_vertical_gradient_level(10) = -9999999.9, & 432 434 volume_flow(1:2) = 0.0, volume_flow_area(1:2) = 0.0, & 433 volume_flow_initial(1:2) = 0.0, wall_heatflux(0:4) = 0.0 435 volume_flow_initial(1:2) = 0.0, wall_heatflux(0:4) = 0.0, & 436 wall_humidityflux(0:4) = 0.0, wall_qflux(0:4) = 0.0, & 437 wall_salinityflux(0:4) = 0.0, wall_scalarflux(0:4) = 0.0 434 438 435 439 -
palm/trunk/SOURCE/prognostic_equations.f90
r110 r129 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! add wall_*flux to parameter list of calls of diffusion_s 7 7 ! 8 8 ! Former revisions: … … 369 369 !-- Tendency terms 370 370 IF ( scalar_advec == 'bc-scheme' ) THEN 371 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, tend ) 371 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, & 372 wall_heatflux, tend ) 372 373 ELSE 373 374 IF ( tsc(2) == 2.0 .OR. timestep_scheme(1:5) == 'runge' ) THEN … … 383 384 THEN 384 385 CALL diffusion_s( i, j, ddzu, ddzw, kh_m, pt_m, shf_m, & 385 tswst_m, tend )386 tswst_m, wall_heatflux, tend ) 386 387 ELSE 387 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, tend ) 388 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, & 389 wall_heatflux, tend ) 388 390 ENDIF 389 391 ENDIF … … 471 473 IF ( scalar_advec == 'bc-scheme' ) THEN 472 474 CALL diffusion_s( i, j, ddzu, ddzw, kh, sa, saswsb, saswst, & 473 tend )475 wall_salinityflux, tend ) 474 476 ELSE 475 477 IF ( tsc(2) == 2.0 .OR. timestep_scheme(1:5) == 'runge' ) THEN … … 483 485 ENDIF 484 486 CALL diffusion_s( i, j, ddzu, ddzw, kh, sa, saswsb, saswst, & 485 tend )487 wall_salinityflux, tend ) 486 488 ENDIF 487 489 … … 563 565 !-- Tendency-terms 564 566 IF ( scalar_advec == 'bc-scheme' ) THEN 565 CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, tend ) 567 CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, & 568 wall_qflux, tend ) 566 569 ELSE 567 570 IF ( tsc(2) == 2.0 .OR. timestep_scheme(1:5) == 'runge' ) THEN … … 577 580 THEN 578 581 CALL diffusion_s( i, j, ddzu, ddzw, kh_m, q_m, qsws_m, & 579 qswst_m, tend )582 qswst_m, wall_qflux, tend ) 580 583 ELSE 581 584 CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, & 582 tend )585 wall_qflux, tend ) 583 586 ENDIF 584 587 ENDIF … … 974 977 THEN 975 978 CALL diffusion_s( i, j, ddzu, ddzw, kh_m, pt_m, shf_m, & 976 tswst_m, tend ) 977 ELSE 978 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, tend ) 979 tswst_m, wall_heatflux, tend ) 980 ELSE 981 CALL diffusion_s( i, j, ddzu, ddzw, kh, pt, shf, tswst, & 982 wall_heatflux, tend ) 979 983 ENDIF 980 984 … … 1033 1037 ENDIF 1034 1038 CALL diffusion_s( i, j, ddzu, ddzw, kh, sa, saswsb, saswst, & 1035 tend )1039 wall_salinityflux, tend ) 1036 1040 1037 1041 CALL user_actions( i, j, 'sa-tendency' ) … … 1087 1091 THEN 1088 1092 CALL diffusion_s( i, j, ddzu, ddzw, kh_m, q_m, qsws_m, & 1089 qswst_m, tend )1093 qswst_m, wall_qflux, tend ) 1090 1094 ELSE 1091 1095 CALL diffusion_s( i, j, ddzu, ddzw, kh, q, qsws, qswst, & 1092 tend )1096 wall_qflux, tend ) 1093 1097 ENDIF 1094 1098 … … 1487 1491 !-- pt-tendency terms with no communication 1488 1492 IF ( scalar_advec == 'bc-scheme' ) THEN 1489 CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tswst, tend ) 1493 CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tswst, wall_heatflux, & 1494 tend ) 1490 1495 ELSE 1491 1496 IF ( tsc(2) == 2.0 .OR. timestep_scheme(1:5) == 'runge' ) THEN … … 1499 1504 ENDIF 1500 1505 IF ( tsc(2) == 2.0 .AND. timestep_scheme(1:8) == 'leapfrog' ) THEN 1501 CALL diffusion_s( ddzu, ddzw, kh_m, pt_m, shf_m, tswst_m, tend ) 1506 CALL diffusion_s( ddzu, ddzw, kh_m, pt_m, shf_m, tswst_m, & 1507 wall_heatflux, tend ) 1502 1508 ELSE 1503 CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tswst, tend ) 1509 CALL diffusion_s( ddzu, ddzw, kh, pt, shf, tswst, wall_heatflux, & 1510 tend ) 1504 1511 ENDIF 1505 1512 ENDIF … … 1589 1596 1590 1597 ! 1591 !-- Scalar/q-tendency terms with no communication1598 !-- sa-tendency terms with no communication 1592 1599 IF ( scalar_advec == 'bc-scheme' ) THEN 1593 CALL diffusion_s( ddzu, ddzw, kh, sa, saswsb, saswst, tend ) 1600 CALL diffusion_s( ddzu, ddzw, kh, sa, saswsb, saswst, & 1601 wall_salinityflux, tend ) 1594 1602 ELSE 1595 1603 IF ( tsc(2) == 2.0 .OR. timestep_scheme(1:5) == 'runge' ) THEN … … 1602 1610 ENDIF 1603 1611 ENDIF 1604 CALL diffusion_s( ddzu, ddzw, kh, sa, saswsb, saswst, tend ) 1612 CALL diffusion_s( ddzu, ddzw, kh, sa, saswsb, saswst, & 1613 wall_salinityflux, tend ) 1605 1614 ENDIF 1606 1615 … … 1689 1698 !-- Scalar/q-tendency terms with no communication 1690 1699 IF ( scalar_advec == 'bc-scheme' ) THEN 1691 CALL diffusion_s( ddzu, ddzw, kh, q, qsws, qswst, tend )1700 CALL diffusion_s( ddzu, ddzw, kh, q, qsws, qswst, wall_qflux, tend ) 1692 1701 ELSE 1693 1702 IF ( tsc(2) == 2.0 .OR. timestep_scheme(1:5) == 'runge' ) THEN … … 1701 1710 ENDIF 1702 1711 IF ( tsc(2) == 2.0 .AND. timestep_scheme(1:8) == 'leapfrog' ) THEN 1703 CALL diffusion_s( ddzu, ddzw, kh_m, q_m, qsws_m, qswst_m, tend ) 1704 ELSE 1705 CALL diffusion_s( ddzu, ddzw, kh, q, qsws, qswst, tend ) 1712 CALL diffusion_s( ddzu, ddzw, kh_m, q_m, qsws_m, qswst_m, & 1713 wall_qflux, tend ) 1714 ELSE 1715 CALL diffusion_s( ddzu, ddzw, kh, q, qsws, qswst, & 1716 wall_qflux, tend ) 1706 1717 ENDIF 1707 1718 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.