Ignore:
Timestamp:
Jun 21, 2007 8:23:15 AM (14 years ago)
Author:
raasch
Message:

New:
---
ocean version including prognostic equation for salinity and equation of state for seawater. Routine buoyancy can be used with both temperature and density.
+ inipar-parameters bc_sa_t, bottom_salinityflux, ocean, sa_surface, sa_vertical_gradient, sa_vertical_gradient_level, top_salinityflux

advec_s_bc, average_3d_data, boundary_conds, buoyancy, check_parameters, data_output_2d, data_output_3d, diffusion_e, flow_statistics, header, init_grid, init_3d_model, modules, netcdf, parin, production_e, prognostic_equations, read_var_list, sum_up_3d_data, swap_timelevel, time_integration, user_interface, write_var_list, write_3d_binary

New:
eqn_state_seawater, init_ocean

Changed:


inipar-parameter use_pt_reference renamed use_reference

hydro_press renamed hyp, routine calc_mean_pt_profile renamed calc_mean_profile

format adjustments for the ocean version (run_control)

advec_particles, buoyancy, calc_liquid_water_content, check_parameters, diffusion_e, diffusivities, header, init_cloud_physics, modules, production_e, prognostic_equations, run_control

Errors:


Bugfix: height above topography instead of height above level k=0 is used for calculating the mixing length (diffusion_e and diffusivities).

Bugfix: error in boundary condition for TKE removed (advec_s_bc)

advec_s_bc, diffusion_e, prognostic_equations

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/production_e.f90

    r77 r97  
    44! Actual revisions:
    55! -----------------
    6 !
     6! energy production by density flux (in ocean) added
     7! use_pt_reference renamed use_reference
    78!
    89! Former revisions:
     
    364365          IF ( .NOT. humidity )  THEN
    365366
    366              IF ( use_pt_reference )  THEN
    367 
    368                 DO  j = nys, nyn
    369                    DO  k = nzb_diff_s_inner(j,i), nzt_diff
    370                       tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g/pt_reference * &
     367             IF ( use_reference )  THEN
     368
     369                IF ( ocean )  THEN
     370!
     371!--                So far in the ocean no special treatment of density flux in
     372!--                the bottom and top surface layer
     373                   DO  j = nys, nyn
     374                      DO  k = nzb_s_inner(j,i), nzt
     375                         tend(k,j,i) = tend(k,j,i) +                    &
     376                                       kh(k,j,i) * g / prho_reference * &
     377                                       ( rho(k+1,j,i)-rho(k-1,j,i) ) * dd2zu(k)
     378                      ENDDO
     379                   ENDDO
     380
     381                ELSE
     382
     383                   DO  j = nys, nyn
     384                      DO  k = nzb_diff_s_inner(j,i), nzt_diff
     385                         tend(k,j,i) = tend(k,j,i) +                  &
     386                                       kh(k,j,i) * g / pt_reference * &
    371387                                       ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
     388                      ENDDO
     389
     390                      IF ( use_surface_fluxes )  THEN
     391                         k = nzb_diff_s_inner(j,i)-1
     392                         tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
     393                      ENDIF
     394
     395                      IF ( use_top_fluxes )  THEN
     396                         k = nzt
     397                         tend(k,j,i) = tend(k,j,i) + g / pt_reference * &
     398                                                     tswst(j,i)
     399                      ENDIF
    372400                   ENDDO
    373401
    374                    IF ( use_surface_fluxes )  THEN
    375                       k = nzb_diff_s_inner(j,i)-1
    376                       tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
    377                    ENDIF
    378 
    379                    IF ( use_top_fluxes )  THEN
    380                       k = nzt
    381                       tend(k,j,i) = tend(k,j,i) + g / pt_reference * tswst(j,i)
    382                    ENDIF
    383                 ENDDO
     402                ENDIF
    384403
    385404             ELSE
    386405
    387                 DO  j = nys, nyn
    388                    DO  k = nzb_diff_s_inner(j,i), nzt_diff
    389                       tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * &
     406                IF ( ocean )  THEN
     407!
     408!--                So far in the ocean no special treatment of density flux in
     409!--                the bottom and top surface layer
     410                   DO  j = nys, nyn
     411                      DO  k = nzb_s_inner(j,i), nzt
     412                         tend(k,j,i) = tend(k,j,i) -                &
     413                                       kh(k,j,i) * g / rho(k,j,i) * &
     414                                       ( rho(k+1,j,i)-rho(k-1,j,i) ) * dd2zu(k)
     415                      ENDDO
     416                   ENDDO
     417
     418                ELSE
     419
     420                   DO  j = nys, nyn
     421                      DO  k = nzb_diff_s_inner(j,i), nzt_diff
     422                         tend(k,j,i) = tend(k,j,i) -               &
     423                                       kh(k,j,i) * g / pt(k,j,i) * &
    390424                                       ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
     425                      ENDDO
     426
     427                      IF ( use_surface_fluxes )  THEN
     428                         k = nzb_diff_s_inner(j,i)-1
     429                         tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
     430                      ENDIF
     431
     432                      IF ( use_top_fluxes )  THEN
     433                         k = nzt
     434                         tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
     435                      ENDIF
    391436                   ENDDO
    392437
    393                    IF ( use_surface_fluxes )  THEN
    394                       k = nzb_diff_s_inner(j,i)-1
    395                       tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
    396                    ENDIF
    397 
    398                    IF ( use_top_fluxes )  THEN
    399                       k = nzt
    400                       tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
    401                    ENDIF
    402                 ENDDO
     438                ENDIF
    403439
    404440             ENDIF
     
    762798       IF ( .NOT. humidity )  THEN
    763799
    764           IF ( use_pt_reference )  THEN
    765 
    766              DO  k = nzb_diff_s_inner(j,i), nzt_diff
    767                 tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt_reference * &
     800          IF ( use_reference )  THEN
     801
     802             IF ( ocean )  THEN
     803!
     804!--             So far in the ocean no special treatment of density flux in the
     805!--             bottom and top surface layer
     806                DO  k = nzb_s_inner(j,i), nzt
     807                   tend(k,j,i) = tend(k,j,i) + kh(k,j,i) * g / prho_reference * &
     808                                      ( rho(k+1,j,i) - rho(k-1,j,i) ) * dd2zu(k)
     809                ENDDO
     810
     811             ELSE
     812
     813                DO  k = nzb_diff_s_inner(j,i), nzt_diff
     814                   tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt_reference * &
    768815                                       ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    769              ENDDO
    770 
    771              IF ( use_surface_fluxes )  THEN
    772                 k = nzb_diff_s_inner(j,i)-1
    773                 tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
     816                ENDDO
     817
     818                IF ( use_surface_fluxes )  THEN
     819                   k = nzb_diff_s_inner(j,i)-1
     820                   tend(k,j,i) = tend(k,j,i) + g / pt_reference * shf(j,i)
     821                ENDIF
     822
     823                IF ( use_top_fluxes )  THEN
     824                   k = nzt
     825                   tend(k,j,i) = tend(k,j,i) + g / pt_reference * tswst(j,i)
     826                ENDIF
     827
    774828             ENDIF
    775829
    776              IF ( use_top_fluxes )  THEN
    777                 k = nzt
    778                 tend(k,j,i) = tend(k,j,i) + g / pt_reference * tswst(j,i)
     830          ELSE
     831
     832             IF ( ocean )  THEN
     833!
     834!--             So far in the ocean no special treatment of density flux in the
     835!--             bottom and top surface layer
     836                DO  k = nzb_s_inner(j,i), nzt
     837                   tend(k,j,i) = tend(k,j,i) + kh(k,j,i) * g / rho(k,j,i) * &
     838                                      ( rho(k+1,j,i) - rho(k-1,j,i) ) * dd2zu(k)
     839                ENDDO
     840
     841             ELSE
     842
     843                DO  k = nzb_diff_s_inner(j,i), nzt_diff
     844                   tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * &
     845                                       ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
     846                ENDDO
     847
     848                IF ( use_surface_fluxes )  THEN
     849                   k = nzb_diff_s_inner(j,i)-1
     850                   tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
     851                ENDIF
     852
     853                IF ( use_top_fluxes )  THEN
     854                   k = nzt
     855                   tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
     856                ENDIF
     857
    779858             ENDIF
    780859
    781           ELSE
    782 
    783              DO  k = nzb_diff_s_inner(j,i), nzt_diff
    784                 tend(k,j,i) = tend(k,j,i) - kh(k,j,i) * g / pt(k,j,i) * &
    785                                        ( pt(k+1,j,i) - pt(k-1,j,i) ) * dd2zu(k)
    786              ENDDO
    787 
    788              IF ( use_surface_fluxes )  THEN
    789                 k = nzb_diff_s_inner(j,i)-1
    790                 tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * shf(j,i)
    791              ENDIF
    792 
    793              IF ( use_top_fluxes )  THEN
    794                 k = nzt
    795                 tend(k,j,i) = tend(k,j,i) + g / pt(k,j,i) * tswst(j,i)
    796              ENDIF
    797 
    798          ENDIF
     860          ENDIF
    799861
    800862       ELSE
Note: See TracChangeset for help on using the changeset viewer.