Ignore:
Timestamp:
Jul 9, 2012 2:31:00 PM (12 years ago)
Author:
raasch
Message:

temperature equation can be switched off; bugfix of tridia_1dd for current Intel (12.1) compilers

File:
1 edited

Legend:

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

    r925 r940  
    44! Current revisions:
    55! -----------------
    6 !
     6! checks for parameter neutral
    77!
    88! Former revisions:
     
    10391039!
    10401040!--    Compute initial temperature profile using the given temperature gradients
    1041        i = 1
    1042        gradient = 0.0
    1043 
    1044        IF ( .NOT. ocean )  THEN
    1045 
    1046           pt_vertical_gradient_level_ind(1) = 0
    1047           DO  k = 1, nzt+1
    1048              IF ( i < 11 ) THEN
    1049                 IF ( pt_vertical_gradient_level(i) < zu(k)  .AND. &
    1050                      pt_vertical_gradient_level(i) >= 0.0 )  THEN
    1051                    gradient = pt_vertical_gradient(i) / 100.0
    1052                    pt_vertical_gradient_level_ind(i) = k - 1
    1053                    i = i + 1
     1041       IF ( .NOT. neutral )  THEN
     1042
     1043          i = 1
     1044          gradient = 0.0
     1045
     1046          IF ( .NOT. ocean )  THEN
     1047
     1048             pt_vertical_gradient_level_ind(1) = 0
     1049             DO  k = 1, nzt+1
     1050                IF ( i < 11 ) THEN
     1051                   IF ( pt_vertical_gradient_level(i) < zu(k)  .AND. &
     1052                        pt_vertical_gradient_level(i) >= 0.0 )  THEN
     1053                      gradient = pt_vertical_gradient(i) / 100.0
     1054                      pt_vertical_gradient_level_ind(i) = k - 1
     1055                      i = i + 1
     1056                   ENDIF
    10541057                ENDIF
    1055              ENDIF
    1056              IF ( gradient /= 0.0 )  THEN
    1057                 IF ( k /= 1 )  THEN
    1058                    pt_init(k) = pt_init(k-1) + dzu(k) * gradient
     1058                IF ( gradient /= 0.0 )  THEN
     1059                   IF ( k /= 1 )  THEN
     1060                      pt_init(k) = pt_init(k-1) + dzu(k) * gradient
     1061                   ELSE
     1062                      pt_init(k) = pt_surface   + 0.5 * dzu(k) * gradient
     1063                   ENDIF
    10591064                ELSE
    1060                    pt_init(k) = pt_surface   + 0.5 * dzu(k) * gradient
     1065                   pt_init(k) = pt_init(k-1)
    10611066                ENDIF
    1062              ELSE
    1063                 pt_init(k) = pt_init(k-1)
    1064              ENDIF
    1065           ENDDO
    1066 
    1067        ELSE
    1068 
    1069           pt_vertical_gradient_level_ind(1) = nzt+1
    1070           DO  k = nzt, 0, -1
    1071              IF ( i < 11 ) THEN
    1072                 IF ( pt_vertical_gradient_level(i) > zu(k)  .AND. &
    1073                      pt_vertical_gradient_level(i) <= 0.0 )  THEN
    1074                    gradient = pt_vertical_gradient(i) / 100.0
    1075                    pt_vertical_gradient_level_ind(i) = k + 1
    1076                    i = i + 1
     1067             ENDDO
     1068
     1069          ELSE
     1070
     1071             pt_vertical_gradient_level_ind(1) = nzt+1
     1072             DO  k = nzt, 0, -1
     1073                IF ( i < 11 ) THEN
     1074                   IF ( pt_vertical_gradient_level(i) > zu(k)  .AND. &
     1075                        pt_vertical_gradient_level(i) <= 0.0 )  THEN
     1076                      gradient = pt_vertical_gradient(i) / 100.0
     1077                      pt_vertical_gradient_level_ind(i) = k + 1
     1078                      i = i + 1
     1079                   ENDIF
    10771080                ENDIF
    1078              ENDIF
    1079              IF ( gradient /= 0.0 )  THEN
    1080                 IF ( k /= nzt )  THEN
    1081                    pt_init(k) = pt_init(k+1) - dzu(k+1) * gradient
     1081                IF ( gradient /= 0.0 )  THEN
     1082                   IF ( k /= nzt )  THEN
     1083                      pt_init(k) = pt_init(k+1) - dzu(k+1) * gradient
     1084                   ELSE
     1085                      pt_init(k)   = pt_surface - 0.5 * dzu(k+1) * gradient
     1086                      pt_init(k+1) = pt_surface + 0.5 * dzu(k+1) * gradient
     1087                   ENDIF
    10821088                ELSE
    1083                    pt_init(k)   = pt_surface - 0.5 * dzu(k+1) * gradient
    1084                    pt_init(k+1) = pt_surface + 0.5 * dzu(k+1) * gradient
     1089                   pt_init(k) = pt_init(k+1)
    10851090                ENDIF
    1086              ELSE
    1087                 pt_init(k) = pt_init(k+1)
    1088              ENDIF
    1089           ENDDO
     1091             ENDDO
     1092
     1093          ENDIF
    10901094
    10911095       ENDIF
     
    15051509    IF ( surface_heatflux == 9999999.9 )  constant_heatflux     = .FALSE.
    15061510    IF ( top_heatflux     == 9999999.9 )  constant_top_heatflux = .FALSE.
     1511
     1512    IF ( neutral )  THEN
     1513
     1514       IF ( surface_heatflux /= 0.0  .AND.  surface_heatflux /= 9999999.9 ) &
     1515       THEN
     1516          message_string = 'heatflux must not be set for pure neutral flow'
     1517          CALL message( 'check_parameters', 'PA0351', 1, 2, 0, 6, 0 )
     1518       ENDIF
     1519
     1520       IF ( top_heatflux /= 0.0  .AND.  top_heatflux /= 9999999.9 ) &
     1521       THEN
     1522          message_string = 'heatflux must not be set for pure neutral flow'
     1523          CALL message( 'check_parameters', 'PA0351', 1, 2, 0, 6, 0 )
     1524       ENDIF
     1525
     1526    ENDIF
     1527
    15071528    IF ( top_momentumflux_u /= 9999999.9  .AND.  &
    15081529         top_momentumflux_v /= 9999999.9 )  THEN
Note: See TracChangeset for help on using the changeset viewer.