Changeset 177 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jul 11, 2008 3:13:39 PM (16 years ago)
Author:
steinfeld
Message:

Bug in the construction of initial vertical profiles fixed

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/CURRENT_MODIFICATIONS

    r175 r177  
    7777Errors:
    7878------
     79Bugfix: Construction of vertical profiles when 10 gradients have been
     80specified in the parameter list (ug, vg, pt, q, sa, lad). (check_parameters)
     81
    7982Bugfix: Determination of the number of vertical levels for which spectra
    8083shall be output - 100 replaced by 10. (netcdf)
  • palm/trunk/SOURCE/check_parameters.f90

    r153 r177  
    44! Actual revisions:
    55! -----------------
     6! Bug fix: Construction of vertical profiles when 10 gradients have been
     7! specified in the parameter list (ug, vg, pt, q, sa, lad) 
     8!
    69! Leaf area density (LAD) explicitly set to its surface value at k=0
    710! Case of reading data for recycling included in initializing_actions,
     
    632635          ug(0) = ug_surface
    633636          DO  k = 1, nzt+1
    634              IF ( ug_vertical_gradient_level(i) < zu(k)  .AND. &
    635                   ug_vertical_gradient_level(i) >= 0.0 )  THEN
    636                 gradient = ug_vertical_gradient(i) / 100.0
    637                 ug_vertical_gradient_level_ind(i) = k - 1
    638                 i = i + 1
    639                 IF ( i > 10 )  THEN
    640                    IF ( myid == 0 )  THEN
    641                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    642                               ' "ug_vertical_gradient_level_ind" exceeded'
    643                    ENDIF
    644                    CALL local_stop
    645                 ENDIF
    646              ENDIF
     637             IF ( i < 11 ) THEN
     638                IF ( ug_vertical_gradient_level(i) < zu(k)  .AND. &
     639                     ug_vertical_gradient_level(i) >= 0.0 )  THEN
     640                   gradient = ug_vertical_gradient(i) / 100.0
     641                   ug_vertical_gradient_level_ind(i) = k - 1
     642                   i = i + 1
     643                ENDIF
     644             ENDIF       
    647645             IF ( gradient /= 0.0 )  THEN
    648646                IF ( k /= 1 )  THEN
     
    661659          ug(nzt+1) = ug_surface
    662660          DO  k = nzt, 0, -1
    663              IF ( ug_vertical_gradient_level(i) > zu(k)  .AND. &
    664                   ug_vertical_gradient_level(i) <= 0.0 )  THEN
    665                 gradient = ug_vertical_gradient(i) / 100.0
    666                 ug_vertical_gradient_level_ind(i) = k + 1
    667                 i = i + 1
    668                 IF ( i > 10 )  THEN
    669                    IF ( myid == 0 )  THEN
    670                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    671                               ' "ug_vertical_gradient_level_ind" exceeded'
    672                    ENDIF
    673                    CALL local_stop
     661             IF ( i < 11 ) THEN
     662                IF ( ug_vertical_gradient_level(i) > zu(k)  .AND. &
     663                     ug_vertical_gradient_level(i) <= 0.0 )  THEN
     664                   gradient = ug_vertical_gradient(i) / 100.0
     665                   ug_vertical_gradient_level_ind(i) = k + 1
     666                   i = i + 1
    674667                ENDIF
    675668             ENDIF
     
    708701          vg(0) = vg_surface
    709702          DO  k = 1, nzt+1
    710              IF ( vg_vertical_gradient_level(i) < zu(k)  .AND. &
    711                   vg_vertical_gradient_level(i) >= 0.0 )  THEN
    712                 gradient = vg_vertical_gradient(i) / 100.0
    713                 vg_vertical_gradient_level_ind(i) = k - 1
    714                 i = i + 1
    715                 IF ( i > 10 )  THEN
    716                    IF ( myid == 0 )  THEN
    717                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    718                               ' "vg_vertical_gradient_level_ind" exceeded'
    719                    ENDIF
    720                    CALL local_stop
     703             IF ( i < 11 ) THEN
     704                IF ( vg_vertical_gradient_level(i) < zu(k)  .AND. &
     705                     vg_vertical_gradient_level(i) >= 0.0 )  THEN
     706                   gradient = vg_vertical_gradient(i) / 100.0
     707                   vg_vertical_gradient_level_ind(i) = k - 1
     708                   i = i + 1
    721709                ENDIF
    722710             ENDIF
     
    737725          vg(nzt+1) = vg_surface
    738726          DO  k = nzt, 0, -1
    739              IF ( vg_vertical_gradient_level(i) > zu(k)  .AND. &
    740                   vg_vertical_gradient_level(i) <= 0.0 )  THEN
    741                 gradient = vg_vertical_gradient(i) / 100.0
    742                 vg_vertical_gradient_level_ind(i) = k + 1
    743                 i = i + 1
    744                 IF ( i > 10 )  THEN
    745                    IF ( myid == 0 )  THEN
    746                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    747                               ' "vg_vertical_gradient_level_ind" exceeded'
    748                    ENDIF
    749                    CALL local_stop
     727             IF ( i < 11 ) THEN
     728                IF ( vg_vertical_gradient_level(i) > zu(k)  .AND. &
     729                     vg_vertical_gradient_level(i) <= 0.0 )  THEN
     730                   gradient = vg_vertical_gradient(i) / 100.0
     731                   vg_vertical_gradient_level_ind(i) = k + 1
     732                   i = i + 1
    750733                ENDIF
    751734             ENDIF
     
    781764          pt_vertical_gradient_level_ind(1) = 0
    782765          DO  k = 1, nzt+1
    783              IF ( pt_vertical_gradient_level(i) < zu(k)  .AND. &
    784                   pt_vertical_gradient_level(i) >= 0.0 )  THEN
    785                 gradient = pt_vertical_gradient(i) / 100.0
    786                 pt_vertical_gradient_level_ind(i) = k - 1
    787                 i = i + 1
    788                 IF ( i > 10 )  THEN
    789                    IF ( myid == 0 )  THEN
    790                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    791                               ' "pt_vertical_gradient_level_ind" exceeded'
    792                    ENDIF
    793                    CALL local_stop
     766             IF ( i < 11 ) THEN
     767                IF ( pt_vertical_gradient_level(i) < zu(k)  .AND. &
     768                     pt_vertical_gradient_level(i) >= 0.0 )  THEN
     769                   gradient = pt_vertical_gradient(i) / 100.0
     770                   pt_vertical_gradient_level_ind(i) = k - 1
     771                   i = i + 1
    794772                ENDIF
    795773             ENDIF
     
    809787          pt_vertical_gradient_level_ind(1) = nzt+1
    810788          DO  k = nzt, 0, -1
    811              IF ( pt_vertical_gradient_level(i) > zu(k)  .AND. &
    812                   pt_vertical_gradient_level(i) <= 0.0 )  THEN
    813                 gradient = pt_vertical_gradient(i) / 100.0
    814                 pt_vertical_gradient_level_ind(i) = k + 1
    815                 i = i + 1
    816                 IF ( i > 10 )  THEN
    817                    IF ( myid == 0 )  THEN
    818                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    819                               ' "pt_vertical_gradient_level_ind" exceeded'
    820                    ENDIF
    821                    CALL local_stop
     789             IF ( i < 11 ) THEN
     790                IF ( pt_vertical_gradient_level(i) > zu(k)  .AND. &
     791                     pt_vertical_gradient_level(i) <= 0.0 )  THEN
     792                   gradient = pt_vertical_gradient(i) / 100.0
     793                   pt_vertical_gradient_level_ind(i) = k + 1
     794                   i = i + 1
    822795                ENDIF
    823796             ENDIF
     
    868841          q_vertical_gradient_level_ind(1) = 0
    869842          DO  k = 1, nzt+1
    870              IF ( q_vertical_gradient_level(i) < zu(k)  .AND. &
    871                   q_vertical_gradient_level(i) >= 0.0 )  THEN
    872                 gradient = q_vertical_gradient(i) / 100.0
    873                 q_vertical_gradient_level_ind(i) = k - 1
    874                 i = i + 1
    875                 IF ( i > 10 )  THEN
    876                    IF ( myid == 0 )  THEN
    877                       PRINT*, '+++ check_parameters: upper bound 10 of arr', &
    878                               'ay "q_vertical_gradient_level_ind" exceeded'
    879                    ENDIF
    880                    CALL local_stop
     843             IF ( i < 11 ) THEN
     844                IF ( q_vertical_gradient_level(i) < zu(k)  .AND. &
     845                     q_vertical_gradient_level(i) >= 0.0 )  THEN
     846                   gradient = q_vertical_gradient(i) / 100.0
     847                   q_vertical_gradient_level_ind(i) = k - 1
     848                   i = i + 1
    881849                ENDIF
    882850             ENDIF
     
    921889          sa_vertical_gradient_level_ind(1) = nzt+1
    922890          DO  k = nzt, 0, -1
    923              IF ( sa_vertical_gradient_level(i) > zu(k)  .AND. &
    924                   sa_vertical_gradient_level(i) <= 0.0 )  THEN
    925                 gradient = sa_vertical_gradient(i) / 100.0
    926                 sa_vertical_gradient_level_ind(i) = k + 1
    927                 i = i + 1
    928                 IF ( i > 10 )  THEN
    929                    IF ( myid == 0 )  THEN
    930                       PRINT*, '+++ check_parameters: upper bound 10 of array', &
    931                               ' "sa_vertical_gradient_level_ind" exceeded'
    932                    ENDIF
    933                    CALL local_stop
     891             IF ( i < 11 ) THEN
     892                IF ( sa_vertical_gradient_level(i) > zu(k)  .AND. &
     893                     sa_vertical_gradient_level(i) <= 0.0 )  THEN
     894                   gradient = sa_vertical_gradient(i) / 100.0
     895                   sa_vertical_gradient_level_ind(i) = k + 1
     896                   i = i + 1
    934897                ENDIF
    935898             ENDIF
     
    961924             lad_vertical_gradient_level_ind(1) = 0
    962925             DO k = 1, pch_index
    963                 IF ( lad_vertical_gradient_level(i) < zu(k) .AND.  &
    964                      lad_vertical_gradient_level(i) >= 0.0 ) THEN
    965                    gradient = lad_vertical_gradient(i)
    966                    lad_vertical_gradient_level_ind(i) = k - 1
    967                    i = i + 1
    968                    IF ( i > 10 ) THEN
    969                       IF ( myid == 0 ) THEN
    970                          PRINT*, '+++ user_init_3d_model: upper bound 10 of array',  &
    971                                  ' "lad_vertical_gradient_level" exceeded'
    972                       ENDIF
    973                       CALL local_stop
     926                IF ( i < 11 ) THEN
     927                   IF ( lad_vertical_gradient_level(i) < zu(k) .AND.  &
     928                        lad_vertical_gradient_level(i) >= 0.0 ) THEN
     929                      gradient = lad_vertical_gradient(i)
     930                      lad_vertical_gradient_level_ind(i) = k - 1
     931                      i = i + 1
    974932                   ENDIF
    975933                ENDIF
Note: See TracChangeset for help on using the changeset viewer.