Changeset 94 for palm/trunk/SOURCE
- Timestamp:
- Jun 1, 2007 3:25:22 PM (18 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/CURRENT_MODIFICATIONS
r90 r94 1 1 New: 2 2 --- 3 ocean version including prognostic equation for salinity and equation of state for seawater 4 + inipar-parameters ocean, sa_surface, sa_vertical_gradient, sa_vertical_gradient_level, top_salinity_flux 5 6 check_parameters, diffusion_e, flow_statistics, header, init_grid, init_3d_model, modules, parin, prognostic_equations, read_var_list, write_var_list, write_3d_binary 3 7 4 8 … … 7 11 8 12 13 14 15 9 16 Errors: 10 17 ------ 18 19 Bugfix: height above topography instead of height above level k=0 is used for calculating the mixing length (diffusion_e and diffusivities). 20 21 diffusion_e, prognostic_equations 22 23 24 25 26 To be completed (adjusted to ocean version): 27 ---------------- 28 29 boundary conditions for salinity (check_parameters) 30 output of salinity profile (header) 31 32 initialization of ug,vg profiles 33 34 calculation of w* 35 output of theta* and z_i (e.g. run_control file) 36 37 default disturbance level -
palm/trunk/SOURCE/check_parameters.f90
r90 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Initial salinity profile is calculated. 7 ! z_max_do1d is checked only in case of ocean = .f., 8 ! +initial temperature profile for the ocean version, 7 9 ! 8 10 ! Former revisions: … … 153 155 ENDIF 154 156 ENDIF 157 158 ! 159 !-- Check ocean setting 160 IF ( ocean ) THEN 161 action = ' ' 162 IF ( timestep_scheme(1:8) == 'leapfrog' ) THEN 163 WRITE( action, '(A,A)' ) 'timestep_scheme = ', timestep_scheme 164 ENDIF 165 IF ( action /= ' ' ) THEN 166 IF ( myid == 0 ) THEN 167 PRINT*, '+++ check_parameters:' 168 PRINT*, ' ocean = .T. does not allow ', TRIM( action ) 169 ENDIF 170 CALL local_stop 171 ENDIF 172 ENDIF 173 155 174 ! 156 175 !-- Check whether there are any illegal values … … 418 437 v_init = vg_surface 419 438 pt_init = pt_surface 420 IF ( humidity ) q_init = q_surface 421 IF ( passive_scalar ) q_init = s_surface 439 IF ( humidity ) q_init = q_surface 440 IF ( ocean ) sa_init = sa_surface 441 IF ( passive_scalar ) q_init = s_surface 422 442 423 443 ! … … 504 524 505 525 ! 506 !-- If required, compute initial temperature profile using the given 507 !-- temperature gradient 526 !-- Compute initial temperature profile using the given temperature gradients 508 527 i = 1 509 528 gradient = 0.0 510 pt_vertical_gradient_level_ind(1) = 0 511 DO k = 1, nzt+1 512 IF ( pt_vertical_gradient_level(i) < zu(k) .AND. & 513 pt_vertical_gradient_level(i) >= 0.0 ) THEN 514 gradient = pt_vertical_gradient(i) / 100.0 515 pt_vertical_gradient_level_ind(i) = k - 1 516 i = i + 1 517 IF ( i > 10 ) THEN 518 IF ( myid == 0 ) THEN 519 PRINT*, '+++ check_parameters: upper bound 10 of array', & 520 ' "pt_vertical_gradient_level_ind" exceeded' 521 ENDIF 522 CALL local_stop 523 ENDIF 524 ENDIF 525 IF ( gradient /= 0.0 ) THEN 526 IF ( k /= 1 ) THEN 527 pt_init(k) = pt_init(k-1) + dzu(k) * gradient 529 530 IF ( .NOT. ocean ) THEN 531 532 pt_vertical_gradient_level_ind(1) = 0 533 DO k = 1, nzt+1 534 IF ( pt_vertical_gradient_level(i) < zu(k) .AND. & 535 pt_vertical_gradient_level(i) >= 0.0 ) THEN 536 gradient = pt_vertical_gradient(i) / 100.0 537 pt_vertical_gradient_level_ind(i) = k - 1 538 i = i + 1 539 IF ( i > 10 ) THEN 540 IF ( myid == 0 ) THEN 541 PRINT*, '+++ check_parameters: upper bound 10 of array', & 542 ' "pt_vertical_gradient_level_ind" exceeded' 543 ENDIF 544 CALL local_stop 545 ENDIF 546 ENDIF 547 IF ( gradient /= 0.0 ) THEN 548 IF ( k /= 1 ) THEN 549 pt_init(k) = pt_init(k-1) + dzu(k) * gradient 550 ELSE 551 pt_init(k) = pt_surface + 0.5 * dzu(k) * gradient 552 ENDIF 528 553 ELSE 529 pt_init(k) = pt_init(k-1) + 0.5 * dzu(k) * gradient 530 ENDIF 531 ELSE 532 pt_init(k) = pt_init(k-1) 533 ENDIF 534 ENDDO 554 pt_init(k) = pt_init(k-1) 555 ENDIF 556 ENDDO 557 558 ELSE 559 560 pt_vertical_gradient_level_ind(1) = nzt+1 561 DO k = nzt, 0, -1 562 IF ( pt_vertical_gradient_level(i) > zu(k) .AND. & 563 pt_vertical_gradient_level(i) <= 0.0 ) THEN 564 gradient = pt_vertical_gradient(i) / 100.0 565 pt_vertical_gradient_level_ind(i) = k + 1 566 i = i + 1 567 IF ( i > 10 ) THEN 568 IF ( myid == 0 ) THEN 569 PRINT*, '+++ check_parameters: upper bound 10 of array', & 570 ' "pt_vertical_gradient_level_ind" exceeded' 571 ENDIF 572 CALL local_stop 573 ENDIF 574 ENDIF 575 IF ( gradient /= 0.0 ) THEN 576 IF ( k /= nzt ) THEN 577 pt_init(k) = pt_init(k+1) - dzu(k+1) * gradient 578 ELSE 579 pt_init(k) = pt_surface - 0.5 * dzu(k+1) * gradient 580 pt_init(k+1) = pt_surface + 0.5 * dzu(k+1) * gradient 581 ENDIF 582 ELSE 583 pt_init(k) = pt_init(k+1) 584 ENDIF 585 ENDDO 586 587 ENDIF 535 588 536 589 ! 537 590 !-- In case of no given temperature gradients, choose gradient of neutral 538 591 !-- stratification 539 IF ( pt_vertical_gradient_level(1) == - 1.0) THEN592 IF ( pt_vertical_gradient_level(1) == -9999999.9 ) THEN 540 593 pt_vertical_gradient_level(1) = 0.0 541 594 ENDIF 542 595 543 596 ! 544 !-- Store temperature gradient at the top boundary for possi le Neumann597 !-- Store temperature gradient at the top boundary for possible Neumann 545 598 !-- boundary condition 546 599 bc_pt_t_val = ( pt_init(nzt+1) - pt_init(nzt) ) / dzu(nzt+1) … … 609 662 ENDIF 610 663 664 ! 665 !-- If required, compute initial salinity profile using the given salinity 666 !-- gradients 667 IF ( ocean ) THEN 668 669 i = 1 670 gradient = 0.0 671 672 sa_vertical_gradient_level_ind(1) = nzt+1 673 DO k = nzt, 0, -1 674 IF ( sa_vertical_gradient_level(i) > zu(k) .AND. & 675 sa_vertical_gradient_level(i) <= 0.0 ) THEN 676 gradient = sa_vertical_gradient(i) / 100.0 677 sa_vertical_gradient_level_ind(i) = k + 1 678 i = i + 1 679 IF ( i > 10 ) THEN 680 IF ( myid == 0 ) THEN 681 PRINT*, '+++ check_parameters: upper bound 10 of array', & 682 ' "sa_vertical_gradient_level_ind" exceeded' 683 ENDIF 684 CALL local_stop 685 ENDIF 686 ENDIF 687 IF ( gradient /= 0.0 ) THEN 688 IF ( k /= nzt ) THEN 689 sa_init(k) = sa_init(k+1) - dzu(k+1) * gradient 690 ELSE 691 sa_init(k) = sa_surface - 0.5 * dzu(k+1) * gradient 692 sa_init(k+1) = sa_surface + 0.5 * dzu(k+1) * gradient 693 ENDIF 694 ELSE 695 sa_init(k) = sa_init(k+1) 696 ENDIF 697 ENDDO 698 699 ENDIF 700 611 701 ENDIF 612 702 … … 1769 1859 !-- y-value range of the coordinate system (PROFIL). 1770 1860 !-- x-value range determined in plot_1d. 1771 cross_uymin = 0.0 1772 IF ( z_max_do1d == -1.0 ) THEN 1773 cross_uymax = zu(nzt+1) 1774 ELSEIF ( z_max_do1d < zu(nzb+1) .OR. z_max_do1d > zu(nzt+1) ) THEN 1775 IF ( myid == 0 ) PRINT*, '+++ check_parameters: z_max_do1d=', & 1776 z_max_do1d,' must be >= ', zu(nzb+1), & 1777 ' or <= ', zu(nzt+1) 1778 CALL local_stop 1779 ELSE 1780 cross_uymax = z_max_do1d 1861 IF ( .NOT. ocean ) THEN 1862 cross_uymin = 0.0 1863 IF ( z_max_do1d == -1.0 ) THEN 1864 cross_uymax = zu(nzt+1) 1865 ELSEIF ( z_max_do1d < zu(nzb+1) .OR. z_max_do1d > zu(nzt+1) ) THEN 1866 IF ( myid == 0 ) PRINT*, '+++ check_parameters: z_max_do1d=', & 1867 z_max_do1d,' must be >= ', zu(nzb+1), & 1868 ' or <= ', zu(nzt+1) 1869 CALL local_stop 1870 ELSE 1871 cross_uymax = z_max_do1d 1872 ENDIF 1781 1873 ENDIF 1782 1874 -
palm/trunk/SOURCE/diffusion_e.f90
r77 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Adjustment of mixing length calculation for the ocean version. zw added to 7 ! argument list. 8 ! This is also a bugfix, because the height above the topography is now 9 ! used instead of the height above level k=0. 7 10 ! 8 11 ! Former revisions: … … 48 51 !------------------------------------------------------------------------------! 49 52 SUBROUTINE diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, theta, & 50 rif, tend, zu )53 rif, tend, zu, zw ) 51 54 52 55 USE control_parameters … … 60 63 REAL :: dpt_dz, l_stable, phi_m 61 64 REAL :: ddzu(1:nzt+1), dd2zu(1:nzt), ddzw(1:nzt+1), & 62 l_grid(1:nzt), zu(0:nzt+1) 65 l_grid(1:nzt), zu(0:nzt+1), zw(0:nzt+1) 63 66 REAL, DIMENSION(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) :: diss, tend 64 67 REAL, DIMENSION(:,:), POINTER :: rif … … 98 101 !-- Adjustment of the mixing length 99 102 IF ( wall_adjustment ) THEN 100 l(k,j) = MIN( wall_adjustment_factor * zu(k), l_grid(k),& 101 l_stable ) 102 ll(k,j) = MIN( wall_adjustment_factor * zu(k), l_grid(k) ) 103 l(k,j) = MIN( wall_adjustment_factor * & 104 ( zu(k) - zw(nzb_s_inner(j,i)) ), & 105 l_grid(k), l_stable ) 106 ll(k,j) = MIN( wall_adjustment_factor * & 107 ( zu(k) - zw(nzb_s_inner(j,i)) ), & 108 l_grid(k) ) 103 109 ELSE 104 110 l(k,j) = MIN( l_grid(k), l_stable ) … … 106 112 ENDIF 107 113 IF ( adjust_mixing_length .AND. prandtl_layer ) THEN 108 l(k,j) = MIN( l(k,j), kappa * zu(k) / phi_m ) 109 ll(k,j) = MIN( ll(k,j), kappa * zu(k) / phi_m ) 114 l(k,j) = MIN( l(k,j), kappa * & 115 ( zu(k) - zw(nzb_s_inner(j,i)) ) & 116 / phi_m ) 117 ll(k,j) = MIN( ll(k,j), kappa * & 118 ( zu(k) - zw(nzb_s_inner(j,i)) ) & 119 / phi_m ) 110 120 ENDIF 111 121 … … 180 190 !-- Adjustment of the mixing length 181 191 IF ( wall_adjustment ) THEN 182 l(k,j) = MIN( wall_adjustment_factor * zu(k), l_grid(k),& 183 l_stable ) 184 ll(k,j) = MIN( wall_adjustment_factor * zu(k), l_grid(k) ) 192 l(k,j) = MIN( wall_adjustment_factor * & 193 ( zu(k) - zw(nzb_s_inner(j,i)) ), & 194 l_grid(k), l_stable ) 195 ll(k,j) = MIN( wall_adjustment_factor * & 196 ( zu(k) - zw(nzb_s_inner(j,i)) ), & 197 l_grid(k) ) 185 198 ELSE 186 199 l(k,j) = MIN( l_grid(k), l_stable ) … … 188 201 ENDIF 189 202 IF ( adjust_mixing_length .AND. prandtl_layer ) THEN 190 l(k,j) = MIN( l(k,j), kappa * zu(k) / phi_m ) 191 ll(k,j) = MIN( ll(k,j), kappa * zu(k) / phi_m ) 203 l(k,j) = MIN( l(k,j), kappa * & 204 ( zu(k) - zw(nzb_s_inner(j,i)) ) & 205 / phi_m ) 206 ll(k,j) = MIN( ll(k,j), kappa * & 207 ( zu(k) - zw(nzb_s_inner(j,i)) ) & 208 / phi_m ) 192 209 ENDIF 193 210 … … 253 270 !------------------------------------------------------------------------------! 254 271 SUBROUTINE diffusion_e_ij( i, j, ddzu, dd2zu, ddzw, diss, e, km, l_grid, & 255 theta, rif, tend, zu )272 theta, rif, tend, zu, zw ) 256 273 257 274 USE control_parameters … … 265 282 REAL :: dpt_dz, l_stable, phi_m 266 283 REAL :: ddzu(1:nzt+1), dd2zu(1:nzt), ddzw(1:nzt+1), & 267 l_grid(1:nzt), zu(0:nzt+1) 284 l_grid(1:nzt), zu(0:nzt+1), zw(0:nzt+1) 268 285 REAL, DIMENSION(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) :: diss, tend 269 286 REAL, DIMENSION(:,:), POINTER :: rif … … 301 318 !-- Adjustment of the mixing length 302 319 IF ( wall_adjustment ) THEN 303 l(k) = MIN( wall_adjustment_factor * zu(k), l_grid(k), l_stable ) 304 ll(k) = MIN( wall_adjustment_factor * zu(k), l_grid(k) ) 320 l(k) = MIN( wall_adjustment_factor * & 321 ( zu(k) - zw(nzb_s_inner(j,i)) ), l_grid(k), & 322 l_stable ) 323 ll(k) = MIN( wall_adjustment_factor * & 324 ( zu(k) - zw(nzb_s_inner(j,i)) ), l_grid(k) ) 305 325 ELSE 306 326 l(k) = MIN( l_grid(k), l_stable ) … … 308 328 ENDIF 309 329 IF ( adjust_mixing_length .AND. prandtl_layer ) THEN 310 l(k) = MIN( l(k), kappa * zu(k) / phi_m ) 311 ll(k) = MIN( ll(k), kappa * zu(k) / phi_m ) 330 l(k) = MIN( l(k), kappa * & 331 ( zu(k) - zw(nzb_s_inner(j,i)) ) / phi_m ) 332 ll(k) = MIN( ll(k), kappa * & 333 ( zu(k) - zw(nzb_s_inner(j,i)) ) / phi_m ) 312 334 ENDIF 313 335 -
palm/trunk/SOURCE/diffusivities.f90
r77 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Adjustment of mixing length calculation for the ocean version. 7 ! This is also a bugfix, because the height above the topography is now 8 ! used instead of the height above level k=0. 7 9 ! 8 10 ! Former revisions: … … 114 116 ENDIF 115 117 IF ( adjust_mixing_length .AND. prandtl_layer ) THEN 116 l(k) = MIN( l(k), kappa * zu(k) / phi_m ) 117 ll(k) = MIN( ll(k), kappa * zu(k) / phi_m ) 118 l(k) = MIN( l(k), kappa * & 119 ( zu(k) - zw(nzb_s_inner(j,i)) ) / phi_m ) 120 ll(k) = MIN( ll(k), kappa * & 121 ( zu(k) - zw(nzb_s_inner(j,i)) ) / phi_m ) 118 122 ENDIF 119 123 -
palm/trunk/SOURCE/flow_statistics.f90
r90 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Calculation of Deardorff velocity scale adjusted to be used with the ocean 7 ! version (HAS STILL TO BE COMPLETED!!!) 7 8 ! 8 9 ! Former revisions: … … 784 785 ! 785 786 !-- Determine the boundary layer height using two different schemes. 786 !-- First scheme: Starting from the Earth's surface, look for the first 787 !-- relative minimum of the total heat flux. The corresponding height is 788 !-- accepted as the boundary layer height, if it is less than 1.5 times the 789 !-- height where the heat flux becomes negative for the first time. 787 !-- First scheme: Starting from the Earth's (Ocean's) surface, look for the 788 !-- first relative minimum (maximum) of the total heat flux. 789 !-- The corresponding height is assumed as the boundary layer height, if it 790 !-- is less than 1.5 times the height where the heat flux becomes negative 791 !-- (positive) for the first time. 790 792 !-- NOTE: This criterion is still capable of improving! 791 793 z_i(1) = 0.0 792 794 first = .TRUE. 793 DO k = nzb, nzt-1 794 IF ( first .AND. hom(k,1,18,sr) < 0.0 ) THEN 795 first = .FALSE. 796 height = zw(k) 797 ENDIF 798 IF ( hom(k,1,18,sr) < 0.0 .AND. & 799 hom(k+1,1,18,sr) > hom(k,1,18,sr) ) THEN 800 IF ( zw(k) < 1.5 * height ) THEN 801 z_i(1) = zw(k) 802 ELSE 803 z_i(1) = height 795 ! IF ( .NOT. ocean ) THEN 796 DO k = nzb, nzt-1 797 IF ( first .AND. hom(k,1,18,sr) < 0.0 ) THEN 798 first = .FALSE. 799 height = zw(k) 804 800 ENDIF 805 EXIT 806 ENDIF 807 ENDDO 801 IF ( hom(k,1,18,sr) < 0.0 .AND. & 802 hom(k+1,1,18,sr) > hom(k,1,18,sr) ) THEN 803 IF ( zw(k) < 1.5 * height ) THEN 804 z_i(1) = zw(k) 805 ELSE 806 z_i(1) = height 807 ENDIF 808 EXIT 809 ENDIF 810 ENDDO 811 ! ELSE 812 ! ENDIF 808 813 809 814 ! … … 829 834 IF ( hom(nzb,1,18,sr) > 0.0 .AND. z_i(1) /= 0.0 ) THEN 830 835 hom(nzb+8,1,pr_palm,sr) = ( g / hom(nzb+1,1,4,sr) * & 831 hom(nzb,1,18,sr) * z_i(1) )**0.333333333 836 hom(nzb,1,18,sr) * & 837 ABS( z_i(1) ) )**0.333333333 832 838 !-- so far this only works if Prandtl layer is used 833 839 hom(nzb+11,1,pr_palm,sr) = hom(nzb,1,16,sr) / hom(nzb+8,1,pr_palm,sr) -
palm/trunk/SOURCE/header.f90
r90 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Output of model height, stretch level, Prandtl-layer height and initial 7 ! temperature profile adjusted to be used also with the ocean version. 7 8 ! 8 9 ! Former revisions: … … 287 288 ! 288 289 !-- Computational grid 289 WRITE ( io, 250 ) dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(nzt+1) 290 IF ( dz_stretch_level_index < nzt+1 ) THEN 291 WRITE ( io, 252 ) dz_stretch_level, dz_stretch_level_index, & 292 dz_stretch_factor, dz_max 290 IF ( .NOT. ocean ) THEN 291 WRITE ( io, 250 ) dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(nzt+1) 292 IF ( dz_stretch_level_index < nzt+1 ) THEN 293 WRITE ( io, 252 ) dz_stretch_level, dz_stretch_level_index, & 294 dz_stretch_factor, dz_max 295 ENDIF 296 ELSE 297 WRITE ( io, 250 ) dx, dy, dz, (nx+1)*dx, (ny+1)*dy, zu(0) 298 IF ( dz_stretch_level_index > 0 ) THEN 299 WRITE ( io, 252 ) dz_stretch_level, dz_stretch_level_index, & 300 dz_stretch_factor, dz_max 301 ENDIF 293 302 ENDIF 294 303 WRITE ( io, 254 ) nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), & … … 440 449 441 450 IF ( prandtl_layer ) THEN 442 WRITE ( io, 305 ) zu(1), roughness_length, kappa, rif_min, rif_max 451 WRITE ( io, 305 ) 0.5 * (zu(1)-zu(0)), roughness_length, kappa, & 452 rif_min, rif_max 443 453 IF ( .NOT. constant_heatflux ) WRITE ( io, 308 ) 444 454 IF ( humidity .AND. .NOT. constant_waterflux ) THEN … … 950 960 DO WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 ) 951 961 952 WRITE (coor_chr,'(F 6.2,4X)') pt_init(pt_vertical_gradient_level_ind(i))953 temperatures = TRIM( temperatures ) // ' 954 955 WRITE (coor_chr,'(F 6.2,4X)') pt_vertical_gradient(i)956 gradients = TRIM( gradients ) // ' 957 958 WRITE (coor_chr,'(I 6,4X)') pt_vertical_gradient_level_ind(i)959 slices = TRIM( slices ) // ' 960 961 WRITE (coor_chr,'(F 6.1,4X)') pt_vertical_gradient_level(i)962 coordinates = TRIM( coordinates ) // ' 962 WRITE (coor_chr,'(F7.2)') pt_init(pt_vertical_gradient_level_ind(i)) 963 temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr ) 964 965 WRITE (coor_chr,'(F7.2)') pt_vertical_gradient(i) 966 gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr ) 967 968 WRITE (coor_chr,'(I7)') pt_vertical_gradient_level_ind(i) 969 slices = TRIM( slices ) // ' ' // TRIM( coor_chr ) 970 971 WRITE (coor_chr,'(F7.1)') pt_vertical_gradient_level(i) 972 coordinates = TRIM( coordinates ) // ' ' // TRIM( coor_chr ) 963 973 964 974 i = i + 1 … … 1384 1394 470 FORMAT (//' Actions during the simulation:'/ & 1385 1395 ' -----------------------------'/) 1386 471 FORMAT (' Disturbance impulse (u,v) every : ',F6.2,' s'/&1387 ' Disturbance amplitude : ',F4.2, ' m/s'/&1388 ' Lower disturbance level : ',F 7.2,' m (GP ',I4,')'/ &1389 ' Upper disturbance level : ',F 7.2,' m (GP ',I4,')')1396 471 FORMAT (' Disturbance impulse (u,v) every : ',F6.2,' s'/ & 1397 ' Disturbance amplitude : ',F4.2, ' m/s'/ & 1398 ' Lower disturbance level : ',F8.2,' m (GP ',I4,')'/ & 1399 ' Upper disturbance level : ',F8.2,' m (GP ',I4,')') 1390 1400 472 FORMAT (' Disturbances continued during the run from i/j =',I4, & 1391 1401 ' to i/j =',I4) -
palm/trunk/SOURCE/init_3d_model.f90
r90 r94 7 7 ! Actual revisions: 8 8 ! ----------------- 9 ! 9 ! Initialization of salinity 10 10 ! 11 11 ! Former revisions: … … 187 187 ENDIF 188 188 189 IF ( ocean ) THEN 190 ALLOCATE( saswst_1(nys-1:nyn+1,nxl-1:nxr+1) ) 191 ALLOCATE( r(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & 192 sa_1(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & 193 sa_2(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1), & 194 sa_3(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ) 195 ENDIF 196 189 197 ! 190 198 !-- 3D-array for storing the dissipation, needed for calculating the sgs … … 285 293 qsws => qsws_1 286 294 qswst => qswst_1 287 q => q_1; q_p => q_2; tq_m => q_3; q_m => q_3295 q => q_1; q_p => q_2; tq_m => q_3; q_m => q_3 288 296 IF ( humidity ) vpt => vpt_1 289 297 IF ( cloud_physics ) ql => ql_1 … … 292 300 ql_c => ql_2 293 301 ENDIF 302 ENDIF 303 304 IF ( ocean ) THEN 305 saswst => saswst_1 306 sa => sa_1; sa_p => sa_2; tsa_m => sa_3 294 307 ENDIF 295 308 … … 457 470 ENDIF 458 471 472 IF ( ocean ) THEN 473 DO i = nxl-1, nxr+1 474 DO j = nys-1, nyn+1 475 sa(:,j,i) = sa_init 476 ENDDO 477 ENDDO 478 ENDIF 459 479 460 480 IF ( constant_diffusion ) THEN … … 566 586 ! 567 587 !-- Initialize fluxes at top surface 568 !-- Currently, only the heatflux can be prescribed. The latent flux is569 !-- zero in this case!588 !-- Currently, only the heatflux and salinity flux can be prescribed. 589 !-- The latent flux is zero in this case! 570 590 IF ( use_top_fluxes ) THEN 571 591 … … 579 599 qswst = 0.0 580 600 IF ( ASSOCIATED( qswst_m ) ) qswst_m = qswst 601 ENDIF 602 603 IF ( ocean ) THEN 604 saswst = top_salinityflux 581 605 ENDIF 582 606 ENDIF … … 744 768 ENDIF 745 769 770 IF ( ocean ) THEN 771 tsa_m = 0.0 772 sa_p = sa 773 ENDIF 774 746 775 ! 747 776 !-- Initialize old timelevels needed for radiation boundary conditions … … 783 812 e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w 784 813 IF ( humidity .OR. passive_scalar ) q_p = q 814 IF ( ocean ) sa_p = sa 785 815 786 816 ELSE -
palm/trunk/SOURCE/init_grid.f90
r77 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! Grid definition for ocean version 7 7 ! 8 8 ! Former revisions: … … 70 70 CALL local_stop 71 71 ENDIF 72 ! 73 !-- Since the w-level lies on the surface, the first u-level (staggered!) lies 74 !-- below the surface (used for "mirror" boundary condition). 75 !-- The first u-level above the surface corresponds to the top of the 76 !-- Prandtl-layer. 77 zu(0) = - dz * 0.5 78 zu(1) = dz * 0.5 79 80 dz_stretch_level_index = nzt+1 81 dz_stretched = dz 82 DO k = 2, nzt+1 83 IF ( dz_stretch_level <= zu(k-1) .AND. dz_stretched < dz_max ) THEN 84 dz_stretched = dz_stretched * dz_stretch_factor 85 dz_stretched = MIN( dz_stretched, dz_max ) 86 IF ( dz_stretch_level_index == nzt+1 ) dz_stretch_level_index = k-1 87 ENDIF 88 zu(k) = zu(k-1) + dz_stretched 89 ENDDO 90 91 ! 92 !-- Compute the u-levels. They are always staggered half-way between the 93 !-- corresponding w-levels. The top w-level is extrapolated linearly. 94 zw(0) = 0.0 95 DO k = 1, nzt 96 zw(k) = ( zu(k) + zu(k+1) ) * 0.5 97 ENDDO 98 zw(nzt+1) = zw(nzt) + 2.0 * ( zu(nzt+1) - zw(nzt) ) 72 73 ! 74 !-- Define the vertical grid levels 75 IF ( .NOT. ocean ) THEN 76 ! 77 !-- Grid for atmosphere with surface at z=0 (k=0, w-grid). 78 !-- Since the w-level lies on the surface, the first u-level (staggered!) 79 !-- lies below the surface (used for "mirror" boundary condition). 80 !-- The first u-level above the surface corresponds to the top of the 81 !-- Prandtl-layer. 82 zu(0) = - dz * 0.5 83 zu(1) = dz * 0.5 84 85 dz_stretch_level_index = nzt+1 86 dz_stretched = dz 87 DO k = 2, nzt+1 88 IF ( dz_stretch_level <= zu(k-1) .AND. dz_stretched < dz_max ) THEN 89 dz_stretched = dz_stretched * dz_stretch_factor 90 dz_stretched = MIN( dz_stretched, dz_max ) 91 IF ( dz_stretch_level_index == nzt+1 ) dz_stretch_level_index = k-1 92 ENDIF 93 zu(k) = zu(k-1) + dz_stretched 94 ENDDO 95 96 ! 97 !-- Compute the w-levels. They are always staggered half-way between the 98 !-- corresponding u-levels. The top w-level is extrapolated linearly. 99 zw(0) = 0.0 100 DO k = 1, nzt 101 zw(k) = ( zu(k) + zu(k+1) ) * 0.5 102 ENDDO 103 zw(nzt+1) = zw(nzt) + 2.0 * ( zu(nzt+1) - zw(nzt) ) 104 105 ELSE 106 ! 107 !-- Grid for ocean with solid surface at z=0 (k=0, w-grid). The free water 108 !-- surface is at k=nzt (w-grid). 109 !-- Since the w-level lies always on the surface, the first/last u-level 110 !-- (staggered!) lies below the bottom surface / above the free surface. 111 !-- It is used for "mirror" boundary condition. 112 !-- The first u-level above the bottom surface corresponds to the top of the 113 !-- Prandtl-layer. 114 zu(nzt+1) = dz * 0.5 115 zu(nzt) = - dz * 0.5 116 117 dz_stretch_level_index = 0 118 dz_stretched = dz 119 DO k = nzt-1, 0, -1 120 IF ( dz_stretch_level <= ABS( zu(k+1) ) .AND. & 121 dz_stretched < dz_max ) THEN 122 dz_stretched = dz_stretched * dz_stretch_factor 123 dz_stretched = MIN( dz_stretched, dz_max ) 124 IF ( dz_stretch_level_index == 0 ) dz_stretch_level_index = k+1 125 ENDIF 126 zu(k) = zu(k+1) - dz_stretched 127 ENDDO 128 129 ! 130 !-- Compute the w-levels. They are always staggered half-way between the 131 !-- corresponding u-levels. 132 !-- The top w-level (nzt+1) is not used but set for consistency, since 133 !-- w and all scalar variables are defined up tp nzt+1. 134 zw(nzt+1) = dz 135 zw(nzt) = 0.0 136 DO k = 0, nzt 137 zw(k) = ( zu(k) + zu(k+1) ) * 0.5 138 ENDDO 139 140 ENDIF 99 141 100 142 ! -
palm/trunk/SOURCE/modules.f90
r90 r94 5 5 ! Actual revisions: 6 6 ! ----------------- 7 ! 7 ! +ocean, r, + salinity variables 8 ! defaults of .._vertical_gradient_levels changed from -1.0 to -9999999.9 8 9 ! 9 10 ! Former revisions: … … 94 95 REAL, DIMENSION(:), ALLOCATABLE :: & 95 96 ddzu, dd2zu, dzu, ddzw, dzw, km_damp_x, km_damp_y, l_grid, pt_init, & 96 q_init, rdf, ug, u_init, u_nzb_p1_for_vfc, vg, v_init,&97 q_init, rdf, sa_init, ug, u_init, u_nzb_p1_for_vfc, vg, v_init, & 97 98 v_nzb_p1_for_vfc, zu, zw 98 99 … … 101 102 102 103 REAL, DIMENSION(:,:), ALLOCATABLE, TARGET :: & 103 qsws_1, qsws_2, qswst_1, qswst_2, rif_1, rif_2, s hf_1, shf_2,&104 tswst_1, tswst_2, usws_1, usws_2, vsws_1, vsws_2104 qsws_1, qsws_2, qswst_1, qswst_2, rif_1, rif_2, saswst_1, shf_1, & 105 shf_2, tswst_1, tswst_2, usws_1, usws_2, vsws_1, vsws_2 105 106 106 107 REAL, DIMENSION(:,:), POINTER :: & 107 qsws, qsws_m, qswst, qswst_m, rif, rif_m, s hf, shf_m, tswst,&108 qsws, qsws_m, qswst, qswst_m, rif, rif_m, saswst, shf, shf_m, tswst, & 108 109 tswst_m, usws, usws_m, vsws, vsws_m 109 110 … … 117 118 REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: & 118 119 e_1, e_2, e_3, kh_1, kh_2, km_1, km_2, p, pt_1, pt_2, pt_3, q_1, & 119 q_2, q_3, ql_1, ql_2, u_1, u_2, u_3, v_1, v_2, v_3, vpt_1, vpt_2,&120 w_1, w_2, w_3120 q_2, q_3, ql_1, ql_2, r, sa_1, sa_2, sa_3, u_1, u_2, u_3, v_1, v_2, & 121 v_3, vpt_1, vpt_2, w_1, w_2, w_3 121 122 122 123 REAL, DIMENSION(:,:,:), POINTER :: & 123 124 e, e_m, e_p, kh, kh_m, km, km_m, pt, pt_m, pt_p, q, q_m, q_p, ql, & 124 ql_c, te_m, tpt_m, tq_m, tu_m, tv_m, tw_m, u, u_m, u_p, v, v_m, v_p,&125 vpt, vpt_m, w, w_m, w_p125 ql_c, sa, sa_p, te_m, tpt_m, tq_m, tsa_m, tu_m, tv_m, tw_m, u, u_m, & 126 u_p, v, v_m, v_p, vpt, vpt_m, w, w_m, w_p 126 127 127 128 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: rif_wall … … 288 289 pt_vertical_gradient_level_ind(10) = -9999, & 289 290 q_vertical_gradient_level_ind(10) = -9999, & 291 sa_vertical_gradient_level_ind(10) = -9999, & 290 292 section(100,3), section_xy(100) = -9999, & 291 293 section_xz(100) = -9999, section_yz(100) = -9999, & … … 312 314 mg_switch_to_pe0 = .FALSE., & 313 315 netcdf_output = .FALSE., netcdf_64bit = .FALSE., & 314 netcdf_64bit_3d = .TRUE., &316 netcdf_64bit_3d = .TRUE., ocean = .FALSE., & 315 317 outflow_l = .FALSE., outflow_n = .FALSE., outflow_r = .FALSE., & 316 318 outflow_s = .FALSE., passive_scalar = .FALSE., & … … 362 364 rayleigh_damping_height = -1.0, residual_limit = 1.0E-4, & 363 365 restart_time = 9999999.9, rif_max = 1.0, rif_min = -5.0, & 364 roughness_length = 0.1, s imulated_time = 0.0, &366 roughness_length = 0.1, sa_surface = 35.0, simulated_time = 0.0, & 365 367 simulated_time_at_begin, sin_alpha_surface, & 366 368 skip_time_data_output = 0.0, skip_time_data_output_av = 9999999.9,& … … 378 380 time_do_sla = 0.0, time_dvrp = 0.0, time_prel = 0.0, & 379 381 time_restart = 9999999.9, time_run_control = 0.0, & 380 top_heatflux = 9999999.9, ug_surface = 0.0, u_gtrans = 0.0, & 382 top_heatflux = 9999999.9, top_salinityflux = 0.0, & 383 ug_surface = 0.0, u_gtrans = 0.0, & 381 384 ups_limit_e = 0.0, ups_limit_pt = 0.0, ups_limit_u = 0.0, & 382 385 ups_limit_v = 0.0, ups_limit_w = 0.0, vg_surface = 0.0, & … … 386 389 REAL :: do2d_xy_last_time(0:1) = -1.0, do2d_xz_last_time(0:1) = -1.0, & 387 390 do2d_yz_last_time(0:1) = -1.0, pt_vertical_gradient(10) = 0.0, & 388 pt_vertical_gradient_level(10) = - 1.0, &391 pt_vertical_gradient_level(10) = -9999999.9, & 389 392 q_vertical_gradient(10) = 0.0, & 390 393 q_vertical_gradient_level(10) = -1.0, & 391 394 s_vertical_gradient(10) = 0.0, & 392 s_vertical_gradient_level(10) = -1.0, threshold(20) = 0.0, & 395 s_vertical_gradient_level(10) = -1.0, 396 sa_vertical_gradient(10) = 0.0, & 397 sa_vertical_gradient_level(10) = -1.0, threshold(20) = 0.0, & 393 398 tsc(10) = (/ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /), & 394 399 ug_vertical_gradient(10) = 0.0, & -
palm/trunk/SOURCE/parin.f90
r90 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! +ocean, sa_surface, sa_vertical_gradient, sa_vertical_gradient_level, 7 ! top_salinity_flux in inipar, 8 ! sa_init is allocated 7 9 ! 8 10 ! Former revisions: … … 61 63 NAMELIST /inipar/ adjust_mixing_length, alpha_surface, bc_e_b, bc_lr, & 62 64 bc_ns, bc_p_b, bc_p_t, bc_pt_b, bc_pt_t, bc_q_b, & 63 bc_q_t,bc_s_b, bc_s_t, bc_uv_b, bc_uv_t, & 64 building_height, building_length_x, building_length_y, & 65 building_wall_left, building_wall_south, & 66 cloud_droplets, cloud_physics, conserve_volume_flow, & 67 cut_spline_overshoot, damp_level_1d, dissipation_1d, & 68 dt, dt_pr_1d, dt_run_control_1d, dx, dy, dz, dz_max, & 69 dz_stretch_factor, dz_stretch_level, e_min, & 70 end_time_1d, fft_method, galilei_transformation, & 71 grid_matching, humidity, inflow_disturbance_begin, & 72 inflow_disturbance_end, initializing_actions, & 73 km_constant, km_damp_max, long_filter_factor, & 74 loop_optimization, mixing_length_1d, & 75 momentum_advec, netcdf_precision, npex, npey, nsor_ini, & 76 nx, ny, nz, omega, outflow_damping_width, & 77 overshoot_limit_e, & 78 overshoot_limit_pt, overshoot_limit_u, & 79 overshoot_limit_v, overshoot_limit_w, passive_scalar, & 80 phi, prandtl_layer, precipitation, pt_reference, & 81 pt_surface, pt_surface_initial_change, & 82 pt_vertical_gradient, pt_vertical_gradient_level, & 83 q_surface, q_surface_initial_change, & 84 q_vertical_gradient, q_vertical_gradient_level, & 85 radiation, random_generator, random_heatflux, rif_max, & 86 rif_min, roughness_length, scalar_advec, & 87 statistic_regions, surface_heatflux, surface_pressure, & 88 surface_scalarflux, surface_waterflux, s_surface, & 89 s_surface_initial_change, s_vertical_gradient, & 90 s_vertical_gradient_level, top_heatflux, & 91 timestep_scheme, topography, ug_surface, & 92 ug_vertical_gradient, ug_vertical_gradient_level, & 93 ups_limit_e, ups_limit_pt, ups_limit_u, ups_limit_v, & 94 ups_limit_w, use_surface_fluxes, use_top_fluxes, & 95 use_ug_for_galilei_tr, use_upstream_for_tke, & 96 vg_surface, vg_vertical_gradient, & 97 vg_vertical_gradient_level, wall_adjustment, & 98 wall_heatflux 65 bc_q_t,bc_s_b, bc_s_t, bc_uv_b, bc_uv_t, building_height, & 66 building_length_x, building_length_y, building_wall_left, & 67 building_wall_south, cloud_droplets, cloud_physics, & 68 conserve_volume_flow, cut_spline_overshoot, damp_level_1d, & 69 dissipation_1d, dt, dt_pr_1d, dt_run_control_1d, dx, dy, dz, & 70 dz_max, dz_stretch_factor, dz_stretch_level, e_min, end_time_1d, & 71 fft_method, galilei_transformation, grid_matching, humidity, & 72 inflow_disturbance_begin, inflow_disturbance_end, & 73 initializing_actions, km_constant, km_damp_max, & 74 long_filter_factor, loop_optimization, mixing_length_1d, & 75 momentum_advec, netcdf_precision, npex, npey, nsor_ini, nx, ny, & 76 nz, ocean, omega, outflow_damping_width, overshoot_limit_e, & 77 overshoot_limit_pt, overshoot_limit_u, overshoot_limit_v, & 78 overshoot_limit_w, passive_scalar, phi, prandtl_layer, & 79 precipitation, pt_reference, pt_surface, & 80 pt_surface_initial_change, pt_vertical_gradient, & 81 pt_vertical_gradient_level, q_surface, q_surface_initial_change, & 82 q_vertical_gradient, q_vertical_gradient_level, radiation, & 83 random_generator, random_heatflux, rif_max, rif_min, & 84 roughness_length, sa_surface, sa_vertical_gradient, & 85 sa_vertical_gradient_level, scalar_advec, statistic_regions, & 86 surface_heatflux, surface_pressure, surface_scalarflux, & 87 surface_waterflux, s_surface, s_surface_initial_change, & 88 s_vertical_gradient, s_vertical_gradient_level, top_heatflux, & 89 top_salinity_flux, timestep_scheme, topography, ug_surface, & 90 ug_vertical_gradient, ug_vertical_gradient_level, ups_limit_e, & 91 ups_limit_pt, ups_limit_u, ups_limit_v, ups_limit_w, & 92 use_surface_fluxes, use_top_fluxes, use_ug_for_galilei_tr, & 93 use_upstream_for_tke, vg_surface, vg_vertical_gradient, & 94 vg_vertical_gradient_level, wall_adjustment, wall_heatflux 99 95 100 96 … … 232 228 233 229 ALLOCATE( ug(0:nz+1), vg(0:nz+1), & 234 pt_init(0:nz+1), q_init(0:nz+1), u_init(0:nz+1), &235 v_init(0:nz+1),&230 pt_init(0:nz+1), q_init(0:nz+1), sa_init(0:nz+1), & 231 u_init(0:nz+1), v_init(0:nz+1), & 236 232 hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions) ) 237 233 hom = 0.0 -
palm/trunk/SOURCE/prognostic_equations.f90
r77 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! new argument zw in calls of diffusion_e 7 7 ! 8 8 ! Former revisions: … … 557 557 IF ( .NOT. humidity ) THEN 558 558 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & 559 l_grid, pt, rif, tend, zu )559 l_grid, pt, rif, tend, zu, zw ) 560 560 ELSE 561 561 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & 562 l_grid, vpt, rif, tend, zu )562 l_grid, vpt, rif, tend, zu, zw ) 563 563 ENDIF 564 564 ELSE … … 582 582 IF ( .NOT. humidity ) THEN 583 583 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, & 584 km_m, l_grid, pt_m, rif_m, tend, zu ) 584 km_m, l_grid, pt_m, rif_m, tend, zu, & 585 zw ) 585 586 ELSE 586 587 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, & 587 km_m, l_grid, vpt_m, rif_m, tend, zu ) 588 km_m, l_grid, vpt_m, rif_m, tend, zu, & 589 zw ) 588 590 ENDIF 589 591 ELSE 590 592 IF ( .NOT. humidity ) THEN 591 593 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & 592 l_grid, pt, rif, tend, zu )594 l_grid, pt, rif, tend, zu, zw ) 593 595 ELSE 594 596 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & 595 l_grid, vpt, rif, tend, zu )597 l_grid, vpt, rif, tend, zu, zw ) 596 598 ENDIF 597 599 ENDIF … … 961 963 IF ( .NOT. humidity ) THEN 962 964 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, & 963 km_m, l_grid, pt_m, rif_m, tend, zu ) 965 km_m, l_grid, pt_m, rif_m, tend, zu, & 966 zw ) 964 967 ELSE 965 968 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, & 966 km_m, l_grid, vpt_m, rif_m, tend, zu ) 969 km_m, l_grid, vpt_m, rif_m, tend, zu, & 970 zw ) 967 971 ENDIF 968 972 ELSE 969 973 IF ( .NOT. humidity ) THEN 970 974 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & 971 l_grid, pt, rif, tend, zu )975 l_grid, pt, rif, tend, zu, zw ) 972 976 ELSE 973 977 CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, & 974 l_grid, vpt, rif, tend, zu )978 l_grid, vpt, rif, tend, zu, zw ) 975 979 ENDIF 976 980 ENDIF … … 1500 1504 IF ( .NOT. humidity ) THEN 1501 1505 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, & 1502 rif, tend, zu )1506 rif, tend, zu, zw ) 1503 1507 ELSE 1504 1508 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, vpt, & 1505 rif, tend, zu )1509 rif, tend, zu, zw ) 1506 1510 ENDIF 1507 1511 ELSE … … 1523 1527 IF ( .NOT. humidity ) THEN 1524 1528 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e_m, km_m, l_grid, & 1525 pt_m, rif_m, tend, zu )1529 pt_m, rif_m, tend, zu, zw ) 1526 1530 ELSE 1527 1531 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e_m, km_m, l_grid, & 1528 vpt_m, rif_m, tend, zu )1532 vpt_m, rif_m, tend, zu, zw ) 1529 1533 ENDIF 1530 1534 ELSE 1531 1535 IF ( .NOT. humidity ) THEN 1532 1536 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, & 1533 rif, tend, zu )1537 rif, tend, zu, zw ) 1534 1538 ELSE 1535 1539 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, vpt, & 1536 rif, tend, zu )1540 rif, tend, zu, zw ) 1537 1541 ENDIF 1538 1542 ENDIF -
palm/trunk/SOURCE/read_3d_binary.f90
r77 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! +sa, saswst 7 7 ! 8 8 ! Former revisions: … … 282 282 ALLOCATE( s_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ) 283 283 READ ( 13 ) s_av 284 CASE ( 'sa' ) 285 READ ( 13 ) sa 286 CASE ( 'saswst' ) 287 READ ( 13 ) saswst 284 288 CASE ( 'shf' ) 285 289 READ ( 13 ) shf -
palm/trunk/SOURCE/read_var_list.f90
r90 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! +ocean, sa_init, sa_surface, sa_vertical_gradient, 7 ! sa_vertical_gradient_level, top_salinity_flux 7 8 ! 8 9 ! Former revisions: … … 107 108 READ ( 13 ) statistic_regions 108 109 ALLOCATE( ug(0:nz+1), u_init(0:nz+1), vg(0:nz+1), v_init(0:nz+1), & 109 pt_init(0:nz+1), q_init(0:nz+1), &110 pt_init(0:nz+1), q_init(0:nz+1), sa_init(0:nz+1), & 110 111 hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions) ) 111 112 … … 256 257 CASE ( 'ny' ) 257 258 READ ( 13 ) ny 259 CASE ( 'ocean' ) 260 READ ( 13 ) ocean 258 261 CASE ( 'old_dt' ) 259 262 READ ( 13 ) old_dt … … 320 323 CASE ( 'runnr' ) 321 324 READ ( 13 ) runnr 325 CASE ( 'sa_init' ) 326 READ ( 13 ) sa_init 327 CASE ( 'sa_surface' ) 328 READ ( 13 ) sa_surface 329 CASE ( 'sa_vertical_gradient' ) 330 READ ( 13 ) sa_vertical_gradient 331 CASE ( 'sa_vertical_gradient_level' ) 332 READ ( 13 ) sa_vertical_gradient_level 322 333 CASE ( 'scalar_advec' ) 323 334 READ ( 13 ) scalar_advec … … 378 389 CASE ( 'top_heatflux' ) 379 390 READ ( 13 ) top_heatflux 391 CASE ( 'top_salinityflux' ) 392 READ ( 13 ) top_salinityflux 380 393 CASE ( 'tsc' ) 381 394 READ ( 13 ) tsc -
palm/trunk/SOURCE/write_3d_binary.f90
r77 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! +sa, saswst 7 7 ! 8 8 ! Former revisions: … … 131 131 WRITE ( 14 ) 'qswst_m '; WRITE ( 14 ) qswst_m 132 132 ENDIF 133 ENDIF 134 IF ( ocean ) THEN 135 WRITE ( 14 ) 'sa '; WRITE ( 14 ) sa 136 WRITE ( 14 ) 'saswst '; WRITE ( 14 ) saswst 133 137 ENDIF 134 138 IF ( ALLOCATED( ql_c_av ) ) THEN -
palm/trunk/SOURCE/write_var_list.f90
r90 r94 4 4 ! Actual revisions: 5 5 ! ----------------- 6 ! 6 ! +ocean, sa_init, sa_surface, sa_vertical_gradient, 7 ! sa_vertical_gradient_level, top_salinity_flux 7 8 ! 8 9 ! Former revisions: … … 202 203 WRITE ( 14 ) 'ny ' 203 204 WRITE ( 14 ) ny 205 WRITE ( 14 ) 'ocean ' 206 WRITE ( 14 ) ocean 204 207 WRITE ( 14 ) 'old_dt ' 205 208 WRITE ( 14 ) old_dt … … 266 269 WRITE ( 14 ) 'runnr ' 267 270 WRITE ( 14 ) runnr 271 WRITE ( 14 ) 'sa_init ' 272 WRITE ( 14 ) sa_init 273 WRITE ( 14 ) 'sa_surface ' 274 WRITE ( 14 ) sa_surface 275 WRITE ( 14 ) 'sa_vertical_gradient ' 276 WRITE ( 14 ) sa_vertical_gradient 277 WRITE ( 14 ) 'sa_vertical_gradient_level ' 278 WRITE ( 14 ) sa_vertical_gradient_level 268 279 WRITE ( 14 ) 'scalar_advec ' 269 280 WRITE ( 14 ) scalar_advec … … 324 335 WRITE ( 14 ) 'top_heatflux ' 325 336 WRITE ( 14 ) top_heatflux 337 WRITE ( 14 ) 'top_salinityflux ' 338 WRITE ( 14 ) top_salinityflux 326 339 WRITE ( 14 ) 'tsc ' 327 340 WRITE ( 14 ) tsc
Note: See TracChangeset
for help on using the changeset viewer.