Ignore:
Timestamp:
Jun 21, 2007 8:23:15 AM (17 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/header.f90

    r94 r97  
    44! Actual revisions:
    55! -----------------
    6 ! Output of model height, stretch level, Prandtl-layer height and initial
    7 ! temperature profile adjusted to be used also with the ocean version.
     6! Adjustments for the ocean version.
     7! use_pt_reference renamed use_reference
    88!
    99! Former revisions:
     
    103103          PRINT*,'+++ header:  unknown action(s): ',initializing_actions
    104104       ENDIF
     105    ENDIF
     106    IF ( ocean )  THEN
     107       run_classification = 'ocean - ' // run_classification
     108    ELSE
     109       run_classification = 'atmosphere - ' // run_classification
    105110    ENDIF
    106111
     
    391396       roben = 'e(nzt+1) = e(nzt) = e(nzt-1)'
    392397
    393        WRITE ( io, 301 )  runten, roben       
    394 
    395     ENDIF
    396 
    397     IF ( humidity  .OR.  passive_scalar )  THEN
    398        IF ( humidity )  THEN
    399           IF ( ibc_q_b == 0 )  THEN
    400              runten = 'q(0)     = q_surface'
    401           ELSE
    402              runten = 'q(0)     = q(1)'
    403           ENDIF
    404           IF ( ibc_q_t == 0 )  THEN
    405              roben =  'q(nzt)   = q_top'
    406           ELSE
    407              roben =  'q(nzt)   = q(nzt-1) + dq/dz'
    408           ENDIF
    409        ELSE
    410           IF ( ibc_q_b == 0 )  THEN
    411              runten = 's(0)     = s_surface'
    412           ELSE
    413              runten = 's(0)     = s(1)'
    414           ENDIF
    415           IF ( ibc_q_t == 0 )  THEN
    416              roben =  's(nzt)   = s_top'
    417           ELSE
    418              roben =  's(nzt)   = s(nzt-1) + ds/dz'
    419           ENDIF
    420        ENDIF
    421 
    422        WRITE ( io, 302 ) runten, roben
    423 
     398       WRITE ( io, 301 )  'e', runten, roben       
     399
     400    ENDIF
     401
     402    IF ( ocean )  THEN
     403       runten = 'sa(0)    = sa(1)'
     404       IF ( ibc_sa_t == 0 )  THEN
     405          roben =  'sa(nzt+1) = sa_surface'
     406       ELSE
     407          roben =  'sa(nzt+1) = sa(nzt)'
     408       ENDIF
     409       WRITE ( io, 301 ) 'sa', runten, roben
     410    ENDIF
     411
     412    IF ( humidity )  THEN
     413       IF ( ibc_q_b == 0 )  THEN
     414          runten = 'q(0)     = q_surface'
     415       ELSE
     416          runten = 'q(0)     = q(1)'
     417       ENDIF
     418       IF ( ibc_q_t == 0 )  THEN
     419          roben =  'q(nzt)   = q_top'
     420       ELSE
     421          roben =  'q(nzt)   = q(nzt-1) + dq/dz'
     422       ENDIF
     423       WRITE ( io, 301 ) 'q', runten, roben
     424    ENDIF
     425
     426    IF ( passive_scalar )  THEN
     427       IF ( ibc_q_b == 0 )  THEN
     428          runten = 's(0)     = s_surface'
     429       ELSE
     430          runten = 's(0)     = s(1)'
     431       ENDIF
     432       IF ( ibc_q_t == 0 )  THEN
     433          roben =  's(nzt)   = s_top'
     434       ELSE
     435          roben =  's(nzt)   = s(nzt-1) + ds/dz'
     436       ENDIF
     437       WRITE ( io, 301 ) 's', runten, roben
    424438    ENDIF
    425439
     
    442456       IF ( constant_top_heatflux )  THEN
    443457          WRITE ( io, 306 )  top_heatflux
     458       ENDIF
     459       IF ( ocean  .AND.  constant_top_salinityflux )  THEN
     460          WRITE ( io, 309 )  top_salinityflux
    444461       ENDIF
    445462       IF ( humidity  .OR.  passive_scalar )  THEN
     
    887904!-- Other quantities
    888905    WRITE ( io, 411 )  g
    889     IF ( use_pt_reference )  WRITE ( io, 412 )  pt_reference
     906    IF ( use_reference )  THEN
     907       IF ( ocean )  THEN
     908          WRITE ( io, 412 )  prho_reference
     909       ELSE
     910          WRITE ( io, 413 )  pt_reference
     911       ENDIF
     912    ENDIF
    890913
    891914!
     
    10111034                             TRIM( gradients ), TRIM( slices )
    10121035       ENDIF
     1036    ENDIF
     1037
     1038!
     1039!-- Initial salinity profile
     1040!-- Building output strings, starting with surface salinity
     1041    IF ( ocean )  THEN
     1042       WRITE ( temperatures, '(F6.2)' )  sa_surface
     1043       gradients = '------'
     1044       slices = '     0'
     1045       coordinates = '   0.0'
     1046       i = 1
     1047       DO  WHILE ( sa_vertical_gradient_level_ind(i) /= -9999 )
     1048
     1049          WRITE (coor_chr,'(F7.2)')  sa_init(sa_vertical_gradient_level_ind(i))
     1050          temperatures = TRIM( temperatures ) // ' ' // TRIM( coor_chr )
     1051
     1052          WRITE (coor_chr,'(F7.2)')  sa_vertical_gradient(i)
     1053          gradients = TRIM( gradients ) // ' ' // TRIM( coor_chr )
     1054
     1055          WRITE (coor_chr,'(I7)')  sa_vertical_gradient_level_ind(i)
     1056          slices = TRIM( slices ) // ' ' // TRIM( coor_chr )
     1057
     1058          WRITE (coor_chr,'(F7.1)')  sa_vertical_gradient_level(i)
     1059          coordinates = TRIM( coordinates ) // ' '  // TRIM( coor_chr )
     1060
     1061          i = i + 1
     1062       ENDDO
     1063
     1064       WRITE ( io, 425 )  TRIM( coordinates ), TRIM( temperatures ), &
     1065                          TRIM( gradients ), TRIM( slices )
    10131066    ENDIF
    10141067
     
    11351188
    11361189 99 FORMAT (1X,78('-'))
    1137 100 FORMAT (/1X,'*************************',11X,28('-')/        &
     1190100 FORMAT (/1X,'*************************',11X,42('-')/        &
    11381191            1X,'* ',A,' *',11X,A/                               &
    1139             1X,'*************************',11X,28('-')//        &
     1192            1X,'*************************',11X,42('-')//        &
    11401193            ' Date:            ',A8,11X,'Run:       ',A20/      &
    11411194            ' Time:            ',A8,11X,'Run-No.:   ',I2.2/     &
     
    12561309             ' B. bound.: ',A/ &
    12571310             ' T. bound.: ',A)
    1258 301 FORMAT (/'                     e'// &
    1259              ' B. bound.: ',A/ &
    1260              ' T. bound.: ',A)
    1261 302 FORMAT (/'                     q'// &
     1311301 FORMAT (/'                     ',A// &
    12621312             ' B. bound.: ',A/ &
    12631313             ' T. bound.: ',A)
     
    12681318             '       zp = ',F6.2,' m   z0 = ',F6.4,' m   kappa = ',F4.2/ &
    12691319             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
    1270 306 FORMAT ('       Predefined constant heatflux:   ',F6.3,' K m/s')
     1320306 FORMAT ('       Predefined constant heatflux:   ',F9.6,' K m/s')
    12711321307 FORMAT ('       Heatflux has a random normal distribution')
    12721322308 FORMAT ('       Predefined surface temperature')
     1323309 FORMAT ('       Predefined constant salinityflux:   ',F9.6,' psu m/s')
    12731324310 FORMAT (//'    1D-Model:'// &
    12741325             '       Rif value range:   ',F6.2,' <= rif <=',F6.2)
     
    13521403            '                            f*    = ',F9.6,' 1/s')
    13531404411 FORMAT (/'    Gravity             :   g     = ',F4.1,' m/s**2')
    1354 412 FORMAT (/'    Reference temperature in buoyancy terms: ',F8.4,' K')
     1405412 FORMAT (/'    Reference density in buoyancy terms: ',F8.3,' kg/m**3')
     1406413 FORMAT (/'    Reference temperature in buoyancy terms: ',F8.4,' K')
    13551407415 FORMAT (/'    Cloud physics parameters:'/ &
    13561408             '    ------------------------'/)
     
    13821434424 FORMAT (/'    Characteristic levels of the geo. wind component vg:'// &
    13831435            '       Height:      ',A,'  m'/ &
    1384             '       vg:          ',A,'  m/S'/ &
     1436            '       vg:          ',A,'  m/s'/ &
    13851437            '       Gradient:    ',A,'  1/100s'/ &
    13861438            '       Gridpoint:   ',A)
     1439425 FORMAT (/'    Characteristic levels of the initial salinity profile:'// &
     1440            '       Height:     ',A,'  m'/ &
     1441            '       Salinity:   ',A,'  psu'/ &
     1442            '       Gradient:   ',A,'  psu/100m'/ &
     1443            '       Gridpoint:  ',A)
    13871444450 FORMAT (//' LES / Turbulence quantities:'/ &
    13881445              ' ---------------------------'/)
Note: See TracChangeset for help on using the changeset viewer.