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/prognostic_equations.f90

    r96 r97  
    55! -----------------
    66! prognostic equation for salinity, density is calculated from equation of
    7 ! state for seawater, +eqn_state_seawater_mod
    8 ! new argument zw in calls of diffusion_e, calc_mean_pt_profile renamed
     7! state for seawater and is used for calculation of buoyancy,
     8! +eqn_state_seawater_mod
     9! diffusion_e is called with argument rho in case of ocean runs,
     10! new argument zw in calls of diffusion_e, new argument pt_/prho_reference
     11! in calls of buoyancy and diffusion_e, calc_mean_pt_profile renamed
    912! calc_mean_profile
    1013!
     
    148151          ENDIF
    149152          CALL coriolis( i, j, 1 )
    150           IF ( sloping_surface )  CALL buoyancy( i, j, pt, 1, 4 )
     153          IF ( sloping_surface )  CALL buoyancy( i, j, pt, pt_reference, 1, 4 )
    151154          CALL user_actions( i, j, 'u-tendency' )
    152155
     
    283286          ENDIF
    284287          CALL coriolis( i, j, 3 )
    285           IF ( .NOT. humidity )  THEN
    286              CALL buoyancy( i, j, pt, 3, 4 )
     288          IF ( ocean )  THEN
     289             CALL buoyancy( i, j, rho, prho_reference, 3, 64 )
    287290          ELSE
    288              CALL buoyancy( i, j, vpt, 3, 44 )
     291             IF ( .NOT. humidity )  THEN
     292                CALL buoyancy( i, j, pt, pt_reference, 3, 4 )
     293             ELSE
     294                CALL buoyancy( i, j, vpt, pt_reference, 3, 44 )
     295             ENDIF
    289296          ENDIF
    290297          CALL user_actions( i, j, 'w-tendency' )
     
    654661                  .NOT. use_upstream_for_tke )  THEN
    655662                IF ( .NOT. humidity )  THEN
    656                    CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
    657                                      l_grid, pt, rif, tend, zu, zw )
     663                   IF ( ocean )  THEN
     664                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km,   &
     665                                        l_grid, rho, prho_reference, rif, tend, &
     666                                        zu, zw )
     667                   ELSE
     668                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
     669                                        l_grid, pt, pt_reference, rif, tend,  &
     670                                        zu, zw )
     671                   ENDIF
    658672                ELSE
    659                    CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
    660                                      l_grid, vpt, rif, tend, zu, zw )
     673                   CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km,     &
     674                                     l_grid, vpt, pt_reference, rif, tend, zu, &
     675                                     zw )
    661676                ENDIF
    662677             ELSE
     
    680695                   IF ( .NOT. humidity )  THEN
    681696                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, &
    682                                         km_m, l_grid, pt_m, rif_m, tend, zu, &
    683                                         zw )
     697                                        km_m, l_grid, pt_m, pt_reference,  &
     698                                        rif_m, tend, zu, zw )
    684699                   ELSE
    685700                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, &
    686                                         km_m, l_grid, vpt_m, rif_m, tend, zu, &
    687                                         zw )
     701                                        km_m, l_grid, vpt_m, pt_reference, &
     702                                        rif_m, tend, zu, zw )
    688703                   ENDIF
    689704                ELSE
    690705                   IF ( .NOT. humidity )  THEN
    691                       CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
    692                                         l_grid, pt, rif, tend, zu, zw )
     706                      IF ( ocean )  THEN
     707                         CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e,  &
     708                                           km, l_grid, rho, prho_reference,   &
     709                                           rif, tend, zu, zw )
     710                      ELSE
     711                         CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e,  &
     712                                           km, l_grid, pt, pt_reference, rif, &
     713                                           tend, zu, zw )
     714                      ENDIF
    693715                   ELSE
    694716                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
    695                                         l_grid, vpt, rif, tend, zu, zw )
     717                                        l_grid, vpt, pt_reference, rif, tend, &
     718                                        zu, zw )
    696719                   ENDIF
    697720                ENDIF
     
    797820             ENDIF
    798821             CALL coriolis( i, j, 1 )
    799              IF ( sloping_surface )  CALL buoyancy( i, j, pt, 1, 4 )
     822             IF ( sloping_surface )  CALL buoyancy( i, j, pt, pt_reference, 1, &
     823                                                    4 )
    800824             CALL user_actions( i, j, 'u-tendency' )
    801825
     
    896920             ENDIF
    897921             CALL coriolis( i, j, 3 )
    898              IF ( .NOT. humidity )  THEN
    899                 CALL buoyancy( i, j, pt, 3, 4 )
     922             IF ( ocean )  THEN
     923                CALL buoyancy( i, j, rho, prho_reference, 3, 64 )
    900924             ELSE
    901                 CALL buoyancy( i, j, vpt, 3, 44 )
     925                IF ( .NOT. humidity )  THEN
     926                   CALL buoyancy( i, j, pt, pt_reference, 3, 4 )
     927                ELSE
     928                   CALL buoyancy( i, j, vpt, pt_reference, 3, 44 )
     929                ENDIF
    902930             ENDIF
    903931             CALL user_actions( i, j, 'w-tendency' )
     
    11141142                   IF ( .NOT. humidity )  THEN
    11151143                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, &
    1116                                         km_m, l_grid, pt_m, rif_m, tend, zu, &
    1117                                         zw )
     1144                                        km_m, l_grid, pt_m, pt_reference,  &
     1145                                        rif_m, tend, zu, zw )
    11181146                   ELSE
    11191147                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e_m, &
    1120                                         km_m, l_grid, vpt_m, rif_m, tend, zu, &
    1121                                         zw )
     1148                                        km_m, l_grid, vpt_m, pt_reference, &
     1149                                        rif_m, tend, zu, zw )
    11221150                   ENDIF
    11231151                ELSE
    11241152                   IF ( .NOT. humidity )  THEN
    1125                       CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
    1126                                         l_grid, pt, rif, tend, zu, zw )
     1153                      IF ( ocean )  THEN
     1154                         CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, &
     1155                                           km, l_grid, rho, prho_reference,  &
     1156                                           rif, tend, zu, zw )
     1157                      ELSE
     1158                         CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e,  &
     1159                                           km, l_grid, pt, pt_reference, rif, &
     1160                                           tend, zu, zw )
     1161                      ENDIF
    11271162                   ELSE
    11281163                      CALL diffusion_e( i, j, ddzu, dd2zu, ddzw, diss, e, km, &
    1129                                         l_grid, vpt, rif, tend, zu, zw )
     1164                                        l_grid, vpt, pt_reference, rif, tend, &
     1165                                        zu, zw )
    11301166                   ENDIF
    11311167                ENDIF
     
    12241260    ENDIF
    12251261    CALL coriolis( 1 )
    1226     IF ( sloping_surface )  CALL buoyancy( pt, 1, 4 )
     1262    IF ( sloping_surface )  CALL buoyancy( pt, pt_reference, 1, 4 )
    12271263    CALL user_actions( 'u-tendency' )
    12281264
     
    13671403    ENDIF
    13681404    CALL coriolis( 3 )
    1369     IF ( .NOT. humidity )  THEN
    1370        CALL buoyancy( pt, 3, 4 )
     1405    IF ( ocean )  THEN
     1406       CALL buoyancy( rho, prho_reference, 3, 64 )
    13711407    ELSE
    1372        CALL buoyancy( vpt, 3, 44 )
     1408       IF ( .NOT. humidity )  THEN
     1409          CALL buoyancy( pt, pt_reference, 3, 4 )
     1410       ELSE
     1411          CALL buoyancy( vpt, pt_reference, 3, 44 )
     1412       ENDIF
    13731413    ENDIF
    13741414    CALL user_actions( 'w-tendency' )
     
    17531793       THEN
    17541794          IF ( .NOT. humidity )  THEN
    1755              CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, &
    1756                                rif, tend, zu, zw )
     1795             IF ( ocean )  THEN
     1796                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, rho, &
     1797                                  prho_reference, rif, tend, zu, zw )
     1798             ELSE
     1799                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, &
     1800                                  pt_reference, rif, tend, zu, zw )
     1801             ENDIF
    17571802          ELSE
    17581803             CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, vpt, &
    1759                                rif, tend, zu, zw )
     1804                               pt_reference, rif, tend, zu, zw )
    17601805          ENDIF
    17611806       ELSE
     
    17771822             IF ( .NOT. humidity )  THEN
    17781823                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e_m, km_m, l_grid, &
    1779                                   pt_m, rif_m, tend, zu, zw )
     1824                                  pt_m, pt_reference, rif_m, tend, zu, zw )
    17801825             ELSE
    17811826                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e_m, km_m, l_grid, &
    1782                                   vpt_m, rif_m, tend, zu, zw )
     1827                                  vpt_m, pt_reference, rif_m, tend, zu, zw )
    17831828             ENDIF
    17841829          ELSE
    17851830             IF ( .NOT. humidity )  THEN
    1786                 CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, pt, &
    1787                                   rif, tend, zu, zw )
     1831                IF ( ocean )  THEN
     1832                   CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, &
     1833                                     rho, prho_reference, rif, tend, zu, zw )
     1834                ELSE
     1835                   CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, &
     1836                                     pt, pt_reference, rif, tend, zu, zw )
     1837                ENDIF
    17881838             ELSE
    17891839                CALL diffusion_e( ddzu, dd2zu, ddzw, diss, e, km, l_grid, vpt, &
    1790                                   rif, tend, zu, zw )
     1840                                  pt_reference, rif, tend, zu, zw )
    17911841             ENDIF
    17921842          ENDIF
Note: See TracChangeset for help on using the changeset viewer.