Changeset 94 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jun 1, 2007 3:25:22 PM (18 years ago)
Author:
raasch
Message:

preliminary uncomplete changes for ocean version

Location:
palm/trunk/SOURCE
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/CURRENT_MODIFICATIONS

    r90 r94  
    11New:
    22---
     3ocean 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
     6check_parameters, diffusion_e, flow_statistics, header, init_grid, init_3d_model, modules, parin, prognostic_equations, read_var_list, write_var_list, write_3d_binary
    37
    48
     
    711
    812
     13
     14
     15
    916Errors:
    1017------
     18
     19Bugfix: height above topography instead of height above level k=0 is used for calculating the mixing length (diffusion_e and diffusivities).
     20
     21diffusion_e, prognostic_equations
     22
     23
     24
     25
     26To be completed (adjusted to ocean version):
     27----------------
     28
     29boundary conditions for salinity (check_parameters)
     30output of salinity profile (header)
     31
     32initialization of ug,vg profiles
     33
     34calculation of w*
     35output of theta* and z_i (e.g. run_control file)
     36
     37default disturbance level
  • palm/trunk/SOURCE/check_parameters.f90

    r90 r94  
    44! Actual revisions:
    55! -----------------
    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,
    79!
    810! Former revisions:
     
    153155       ENDIF
    154156    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
    155174!
    156175!-- Check whether there are any illegal values
     
    418437       v_init  = vg_surface
    419438       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
    422442
    423443!
     
    504524
    505525!
    506 !--    If required, compute initial temperature profile using the given
    507 !--    temperature gradient
     526!--    Compute initial temperature profile using the given temperature gradients
    508527       i = 1
    509528       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
    528553             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
    535588
    536589!
    537590!--    In case of no given temperature gradients, choose gradient of neutral
    538591!--    stratification
    539        IF ( pt_vertical_gradient_level(1) == -1.0 )  THEN
     592       IF ( pt_vertical_gradient_level(1) == -9999999.9 )  THEN
    540593          pt_vertical_gradient_level(1) = 0.0
    541594       ENDIF
    542595
    543596!
    544 !--    Store temperature gradient at the top boundary for possile Neumann
     597!--    Store temperature gradient at the top boundary for possible Neumann
    545598!--    boundary condition
    546599       bc_pt_t_val = ( pt_init(nzt+1) - pt_init(nzt) ) / dzu(nzt+1)
     
    609662       ENDIF
    610663
     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
    611701    ENDIF
    612702
     
    17691859!-- y-value range of the coordinate system (PROFIL).
    17701860!-- 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
    17811873    ENDIF
    17821874
  • palm/trunk/SOURCE/diffusion_e.f90

    r77 r94  
    44! Actual revisions:
    55! -----------------
    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.
    710!
    811! Former revisions:
     
    4851!------------------------------------------------------------------------------!
    4952    SUBROUTINE diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, theta, &
    50                             rif, tend, zu )
     53                            rif, tend, zu, zw )
    5154
    5255       USE control_parameters
     
    6063       REAL            ::  dpt_dz, l_stable, phi_m
    6164       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)
    6366       REAL, DIMENSION(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) :: diss, tend
    6467       REAL, DIMENSION(:,:), POINTER   ::  rif
     
    98101!--                Adjustment of the mixing length
    99102                   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) )
    103109                   ELSE
    104110                      l(k,j)  = MIN( l_grid(k), l_stable )
     
    106112                   ENDIF
    107113                   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 )
    110120                   ENDIF
    111121
     
    180190!--                Adjustment of the mixing length
    181191                   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) )
    185198                   ELSE
    186199                      l(k,j)  = MIN( l_grid(k), l_stable )
     
    188201                   ENDIF
    189202                   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 )
    192209                   ENDIF
    193210
     
    253270!------------------------------------------------------------------------------!
    254271    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 )
    256273
    257274       USE control_parameters
     
    265282       REAL            ::  dpt_dz, l_stable, phi_m
    266283       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)
    268285       REAL, DIMENSION(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) ::  diss, tend
    269286       REAL, DIMENSION(:,:), POINTER   ::  rif
     
    301318!--       Adjustment of the mixing length
    302319          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) )
    305325          ELSE
    306326             l(k)  = MIN( l_grid(k), l_stable )
     
    308328          ENDIF
    309329          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 )
    312334          ENDIF
    313335
  • palm/trunk/SOURCE/diffusivities.f90

    r77 r94  
    44! Actual revisions:
    55! -----------------
    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.
    79!
    810! Former revisions:
     
    114116             ENDIF
    115117             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 )
    118122             ENDIF
    119123
  • palm/trunk/SOURCE/flow_statistics.f90

    r90 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Calculation of Deardorff velocity scale adjusted to be used with the ocean
     7! version (HAS STILL TO BE COMPLETED!!!)
    78!
    89! Former revisions:
     
    784785!
    785786!--    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.
    790792!--    NOTE: This criterion is still capable of improving!
    791793       z_i(1) = 0.0
    792794       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)
    804800             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
    808813
    809814!
     
    829834       IF ( hom(nzb,1,18,sr) > 0.0  .AND.  z_i(1) /= 0.0 )  THEN
    830835          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
    832838!--       so far this only works if Prandtl layer is used
    833839          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  
    44! Actual revisions:
    55! -----------------
    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.
    78!
    89! Former revisions:
     
    287288!
    288289!-- 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
    293302    ENDIF
    294303    WRITE ( io, 254 )  nx, ny, nzt+1, MIN( nnx, nx+1 ), MIN( nny, ny+1 ), &
     
    440449
    441450    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
    443453       IF ( .NOT. constant_heatflux )  WRITE ( io, 308 )
    444454       IF ( humidity  .AND.  .NOT. constant_waterflux )  THEN
     
    950960    DO  WHILE ( pt_vertical_gradient_level_ind(i) /= -9999 )
    951961
    952        WRITE (coor_chr,'(F6.2,4X)')  pt_init(pt_vertical_gradient_level_ind(i))
    953        temperatures = TRIM( temperatures ) // '  ' // TRIM( coor_chr )
    954 
    955        WRITE (coor_chr,'(F6.2,4X)')  pt_vertical_gradient(i)
    956        gradients = TRIM( gradients ) // '  ' // TRIM( coor_chr )
    957 
    958        WRITE (coor_chr,'(I6,4X)')  pt_vertical_gradient_level_ind(i)
    959        slices = TRIM( slices ) // '  ' // TRIM( coor_chr )
    960 
    961        WRITE (coor_chr,'(F6.1,4X)')  pt_vertical_gradient_level(i)
    962        coordinates = TRIM( coordinates ) // '  '  // TRIM( coor_chr )
     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 )
    963973
    964974       i = i + 1
     
    13841394470 FORMAT (//' Actions during the simulation:'/ &
    13851395              ' -----------------------------'/)
    1386 471 FORMAT ('    Disturbance impulse (u,v) every :  ',F6.2,' s'/             &
    1387             '    Disturbance amplitude           :    ',F4.2, ' m/s'/        &
    1388             '    Lower disturbance level         : ',F7.2,' m (GP ',I4,')'/  &
    1389             '    Upper disturbance level         : ',F7.2,' m (GP ',I4,')')
     1396471 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,')')
    13901400472 FORMAT ('    Disturbances continued during the run from i/j =',I4, &
    13911401                 ' to i/j =',I4)
  • palm/trunk/SOURCE/init_3d_model.f90

    r90 r94  
    77! Actual revisions:
    88! -----------------
    9 !
     9! Initialization of salinity
    1010!
    1111! Former revisions:
     
    187187    ENDIF
    188188
     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
    189197!
    190198!-- 3D-array for storing the dissipation, needed for calculating the sgs
     
    285293          qsws   => qsws_1
    286294          qswst  => qswst_1
    287           q      => q_1;     q_p  => q_2;     tq_m => q_3;    q_m => q_3
     295          q      => q_1;     q_p  => q_2;     tq_m  => q_3;    q_m => q_3
    288296          IF ( humidity )        vpt  => vpt_1
    289297          IF ( cloud_physics )   ql   => ql_1
     
    292300             ql_c => ql_2
    293301          ENDIF
     302       ENDIF
     303
     304       IF ( ocean )  THEN
     305          saswst => saswst_1
     306          sa     => sa_1;    sa_p => sa_2;    tsa_m => sa_3
    294307       ENDIF
    295308
     
    457470          ENDIF
    458471
     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
    459479         
    460480          IF ( constant_diffusion )  THEN
     
    566586!
    567587!--    Initialize fluxes at top surface
    568 !--    Currently, only the heatflux can be prescribed. The latent flux is
    569 !--    zero in this case!
     588!--    Currently, only the heatflux and salinity flux can be prescribed.
     589!--    The latent flux is zero in this case!
    570590       IF ( use_top_fluxes )  THEN
    571591
     
    579599                qswst = 0.0
    580600                IF ( ASSOCIATED( qswst_m ) )  qswst_m = qswst
     601             ENDIF
     602
     603             IF ( ocean )  THEN
     604                saswst = top_salinityflux
    581605             ENDIF
    582606         ENDIF
     
    744768       ENDIF
    745769
     770       IF ( ocean )  THEN
     771          tsa_m = 0.0
     772          sa_p  = sa
     773       ENDIF
     774
    746775!
    747776!--    Initialize old timelevels needed for radiation boundary conditions
     
    783812       e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w
    784813       IF ( humidity  .OR.  passive_scalar )  q_p = q
     814       IF ( ocean )  sa_p = sa
    785815
    786816    ELSE
  • palm/trunk/SOURCE/init_grid.f90

    r77 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! Grid definition for ocean version
    77!
    88! Former revisions:
     
    7070       CALL local_stop
    7171    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
    99141
    100142!
  • palm/trunk/SOURCE/modules.f90

    r90 r94  
    55! Actual revisions:
    66! -----------------
    7 !
     7! +ocean, r, + salinity variables
     8! defaults of .._vertical_gradient_levels changed from -1.0 to -9999999.9
    89!
    910! Former revisions:
     
    9495    REAL, DIMENSION(:), ALLOCATABLE ::                                         &
    9596          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,      &
    9798          v_nzb_p1_for_vfc, zu, zw
    9899
     
    101102
    102103    REAL, DIMENSION(:,:), ALLOCATABLE, TARGET ::                               &
    103           qsws_1, qsws_2, qswst_1, qswst_2, rif_1, rif_2, shf_1, shf_2,        &
    104           tswst_1, tswst_2, usws_1, usws_2, vsws_1, vsws_2
     104          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
    105106
    106107    REAL, DIMENSION(:,:), POINTER ::                                           &
    107           qsws, qsws_m, qswst, qswst_m, rif, rif_m, shf, shf_m, tswst,        &
     108          qsws, qsws_m, qswst, qswst_m, rif, rif_m, saswst, shf, shf_m, tswst, &
    108109          tswst_m, usws, usws_m, vsws, vsws_m
    109110
     
    117118    REAL, DIMENSION(:,:,:), ALLOCATABLE, TARGET ::                             &
    118119          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_3
     120          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
    121122
    122123    REAL, DIMENSION(:,:,:), POINTER ::                                         &
    123124          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_p
     125          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
    126127
    127128    REAL, DIMENSION(:,:,:,:), ALLOCATABLE ::  rif_wall
     
    288289                pt_vertical_gradient_level_ind(10) = -9999, &
    289290                q_vertical_gradient_level_ind(10) = -9999, &
     291                sa_vertical_gradient_level_ind(10) = -9999, &
    290292                section(100,3), section_xy(100) = -9999, &
    291293                section_xz(100) = -9999, section_yz(100) = -9999, &
     
    312314                mg_switch_to_pe0 = .FALSE., &
    313315                netcdf_output = .FALSE., netcdf_64bit = .FALSE., &
    314                 netcdf_64bit_3d = .TRUE., &
     316                netcdf_64bit_3d = .TRUE., ocean = .FALSE., &
    315317                outflow_l = .FALSE., outflow_n = .FALSE., outflow_r = .FALSE., &
    316318                outflow_s = .FALSE., passive_scalar = .FALSE., &
     
    362364             rayleigh_damping_height = -1.0, residual_limit = 1.0E-4, &
    363365             restart_time = 9999999.9, rif_max = 1.0, rif_min = -5.0, &
    364              roughness_length = 0.1, simulated_time = 0.0, &
     366             roughness_length = 0.1, sa_surface = 35.0, simulated_time = 0.0, &
    365367             simulated_time_at_begin, sin_alpha_surface, &
    366368             skip_time_data_output = 0.0, skip_time_data_output_av = 9999999.9,&
     
    378380             time_do_sla = 0.0, time_dvrp = 0.0, time_prel = 0.0, &
    379381             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, &
    381384             ups_limit_e = 0.0, ups_limit_pt = 0.0, ups_limit_u = 0.0, &
    382385             ups_limit_v = 0.0, ups_limit_w = 0.0, vg_surface = 0.0, &
     
    386389    REAL ::  do2d_xy_last_time(0:1) = -1.0, do2d_xz_last_time(0:1) = -1.0, &
    387390             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, &
    389392             q_vertical_gradient(10) = 0.0, &
    390393             q_vertical_gradient_level(10) = -1.0, &
    391394             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, &
    393398             tsc(10) = (/ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 /), &
    394399             ug_vertical_gradient(10) = 0.0, &
  • palm/trunk/SOURCE/parin.f90

    r90 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! +ocean, sa_surface, sa_vertical_gradient, sa_vertical_gradient_level,
     7! top_salinity_flux in inipar,
     8! sa_init is allocated
    79!
    810! Former revisions:
     
    6163    NAMELIST /inipar/  adjust_mixing_length, alpha_surface, bc_e_b, bc_lr, &
    6264                       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
    9995
    10096
     
    232228
    233229       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),                   &
    236232                 hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions) )
    237233       hom = 0.0
  • palm/trunk/SOURCE/prognostic_equations.f90

    r77 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! new argument zw in calls of diffusion_e
    77!
    88! Former revisions:
     
    557557                IF ( .NOT. humidity )  THEN
    558558                   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 )
    560560                ELSE
    561561                   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 )
    563563                ENDIF
    564564             ELSE
     
    582582                   IF ( .NOT. humidity )  THEN
    583583                      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 )
    585586                   ELSE
    586587                      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 )
    588590                   ENDIF
    589591                ELSE
    590592                   IF ( .NOT. humidity )  THEN
    591593                      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 )
    593595                   ELSE
    594596                      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 )
    596598                   ENDIF
    597599                ENDIF
     
    961963                   IF ( .NOT. humidity )  THEN
    962964                      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 )
    964967                   ELSE
    965968                      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 )
    967971                   ENDIF
    968972                ELSE
    969973                   IF ( .NOT. humidity )  THEN
    970974                      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 )
    972976                   ELSE
    973977                      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 )
    975979                   ENDIF
    976980                ENDIF
     
    15001504          IF ( .NOT. humidity )  THEN
    15011505             CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, &
    1502                                rif, tend, zu )
     1506                               rif, tend, zu, zw )
    15031507          ELSE
    15041508             CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, vpt, &
    1505                                rif, tend, zu )
     1509                               rif, tend, zu, zw )
    15061510          ENDIF
    15071511       ELSE
     
    15231527             IF ( .NOT. humidity )  THEN
    15241528                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 )
    15261530             ELSE
    15271531                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 )
    15291533             ENDIF
    15301534          ELSE
    15311535             IF ( .NOT. humidity )  THEN
    15321536                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, &
    1533                                   rif, tend, zu )
     1537                                  rif, tend, zu, zw )
    15341538             ELSE
    15351539                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, vpt, &
    1536                                   rif, tend, zu )
     1540                                  rif, tend, zu, zw )
    15371541             ENDIF
    15381542          ENDIF
  • palm/trunk/SOURCE/read_3d_binary.f90

    r77 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! +sa, saswst
    77!
    88! Former revisions:
     
    282282             ALLOCATE( s_av(nzb:nzt+1,nys-1:nyn+1,nxl-1:nxr+1) )
    283283             READ ( 13 )  s_av
     284          CASE ( 'sa' )
     285             READ ( 13 )  sa
     286          CASE ( 'saswst' )
     287             READ ( 13 )  saswst
    284288          CASE ( 'shf' )
    285289             READ ( 13 )  shf
  • palm/trunk/SOURCE/read_var_list.f90

    r90 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! +ocean, sa_init, sa_surface, sa_vertical_gradient,
     7! sa_vertical_gradient_level, top_salinity_flux
    78!
    89! Former revisions:
     
    107108    READ ( 13 )  statistic_regions
    108109    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), &
    110111              hom(0:nz+1,2,pr_palm+max_pr_user,0:statistic_regions) )
    111112
     
    256257          CASE ( 'ny' )
    257258             READ ( 13 )  ny
     259          CASE ( 'ocean' )
     260             READ ( 13 )  ocean
    258261          CASE ( 'old_dt' )
    259262             READ ( 13 )  old_dt
     
    320323          CASE ( 'runnr' )
    321324             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
    322333          CASE ( 'scalar_advec' )
    323334             READ ( 13 )  scalar_advec
     
    378389          CASE ( 'top_heatflux' )
    379390             READ ( 13 )  top_heatflux
     391          CASE ( 'top_salinityflux' )
     392             READ ( 13 )  top_salinityflux
    380393          CASE ( 'tsc' )
    381394             READ ( 13 )  tsc
  • palm/trunk/SOURCE/write_3d_binary.f90

    r77 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! +sa, saswst
    77!
    88! Former revisions:
     
    131131          WRITE ( 14 )  'qswst_m             ';  WRITE ( 14 ) qswst_m
    132132       ENDIF
     133    ENDIF
     134    IF ( ocean )  THEN
     135       WRITE ( 14 )  'sa                  ';  WRITE ( 14 )  sa
     136       WRITE ( 14 )  'saswst              ';  WRITE ( 14 )  saswst
    133137    ENDIF
    134138    IF ( ALLOCATED( ql_c_av ) )  THEN
  • palm/trunk/SOURCE/write_var_list.f90

    r90 r94  
    44! Actual revisions:
    55! -----------------
    6 !
     6! +ocean, sa_init, sa_surface, sa_vertical_gradient,
     7! sa_vertical_gradient_level, top_salinity_flux
    78!
    89! Former revisions:
     
    202203    WRITE ( 14 )  'ny                            '
    203204    WRITE ( 14 )  ny
     205    WRITE ( 14 )  'ocean                         '
     206    WRITE ( 14 )  ocean
    204207    WRITE ( 14 )  'old_dt                        '
    205208    WRITE ( 14 )  old_dt
     
    266269    WRITE ( 14 )  'runnr                         '
    267270    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
    268279    WRITE ( 14 )  'scalar_advec                  '
    269280    WRITE ( 14 )  scalar_advec
     
    324335    WRITE ( 14 )  'top_heatflux                  '
    325336    WRITE ( 14 )  top_heatflux
     337    WRITE ( 14 )  'top_salinityflux              '
     338    WRITE ( 14 )  top_salinityflux
    326339    WRITE ( 14 )  'tsc                           '
    327340    WRITE ( 14 )  tsc
Note: See TracChangeset for help on using the changeset viewer.