Changeset 3020 for palm/trunk


Ignore:
Timestamp:
May 14, 2018 10:45:48 AM (6 years ago)
Author:
hellstea
Message:

Bugfix in pmci_define_loglaw_correction_parameters

File:
1 edited

Legend:

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

    r3001 r3020  
    2525! -----------------
    2626! $Id$
     27! Bugfix in pmci_define_loglaw_correction_parameters
     28!
     29! 3001 2018-04-20 12:27:13Z suehring
    2730! Bugfix, replace MERGE function by an if-condition in the anterpolation (in
    2831! order to avoid floating-point exceptions).
     
    26732676       IMPLICIT NONE
    26742677
    2675        INTEGER(iwp), INTENT(IN)  ::  direction  !<
    2676        INTEGER(iwp), INTENT(IN)  ::  ij         !<
    2677        INTEGER(iwp), INTENT(IN)  ::  inc        !<
    2678        INTEGER(iwp), INTENT(IN)  ::  k          !<
    2679        INTEGER(iwp), INTENT(IN)  ::  kb         !<
    2680        INTEGER(iwp), INTENT(OUT) ::  lc         !<
    2681        INTEGER(iwp), INTENT(IN)  ::  ncorr      !<
    2682        INTEGER(iwp), INTENT(IN)  ::  wall_index !<
    2683 
    2684        INTEGER(iwp) ::  alcorr       !<
    2685        INTEGER(iwp) ::  corr_index   !<
    2686        INTEGER(iwp) ::  lcorr        !<
    2687 
    2688        LOGICAL      ::  more         !<
     2678       INTEGER(iwp), INTENT(IN)  ::  direction                 !<
     2679       INTEGER(iwp), INTENT(IN)  ::  ij                        !<
     2680       INTEGER(iwp), INTENT(IN)  ::  inc                       !<
     2681       INTEGER(iwp), INTENT(IN)  ::  k                         !<
     2682       INTEGER(iwp), INTENT(IN)  ::  kb                        !<
     2683       INTEGER(iwp), INTENT(OUT) ::  lc                        !<
     2684       INTEGER(iwp), INTENT(IN)  ::  ncorr                     !<
     2685       INTEGER(iwp), INTENT(IN)  ::  wall_index                !<
     2686
     2687       INTEGER(iwp) ::  alcorr                                 !<
     2688       INTEGER(iwp) ::  corr_index                             !<
     2689       INTEGER(iwp) ::  lcorr                                  !<
     2690
     2691       LOGICAL      ::  more                                   !<             
    26892692
    26902693       REAL(wp), DIMENSION(0:ncorr-1), INTENT(OUT) ::  lcr     !<
    26912694       REAL(wp), INTENT(IN)      ::  z0_l                      !<
    26922695     
    2693        REAL(wp)     ::  logvelc1     !<
     2696       REAL(wp)     ::  logvelc1                               !<
    26942697     
    26952698
     
    27282731!--             The role of inc here is to make the comparison operation "<"
    27292732!--             valid in both directions
    2730                 IF ( inc * corr_index < inc * lc )  THEN
     2733                IF ( ( inc * corr_index < inc * lc ) .AND. ( lc /= -99 ) )  THEN
    27312734                   lcr(alcorr) = LOG( ABS( coord_y(corr_index) + 0.5_wp * dy   &
    27322735                                         - coord_y(wall_index) ) / z0_l )      &
     
    27542757!--             The role of inc here is to make the comparison operation "<"
    27552758!--             valid in both directions
    2756                 IF ( inc * corr_index < inc * lc )  THEN
     2759                IF ( ( inc * corr_index < inc * lc ) .AND. ( lc /= -99 ) )  THEN
    27572760                   lcr(alcorr) = LOG( ABS( coord_x(corr_index) + 0.5_wp * dx   &
    27582761                                         - coord_x(wall_index) ) / z0_l )      &
     
    27872790       INTEGER(iwp), INTENT(OUT) ::  lc   !<
    27882791
    2789        INTEGER(iwp) ::  kbc    !<
    2790        INTEGER(iwp) ::  k1     !<
    2791 
    2792        REAL(wp), INTENT(OUT) ::  logzc1     !<
    2793        REAL(wp), INTENT(IN) ::  z0_l       !<
    2794 
    2795        REAL(wp) ::  zuc1   !<
     2792       INTEGER(iwp) ::  kbc               !<
     2793       INTEGER(iwp) ::  k1                !<
     2794
     2795       REAL(wp), INTENT(OUT) ::  logzc1   !<
     2796       REAL(wp), INTENT(IN)  ::  z0_l     !<
     2797
     2798       REAL(wp) ::  zuc1                  !<
    27962799
    27972800!
     
    28292832       INTEGER(iwp), INTENT(OUT) ::  lc     !<
    28302833
    2831        INTEGER(iwp) ::  jwc      !<
    2832        INTEGER(iwp) ::  j1       !<
    2833 
    2834        REAL(wp), INTENT(IN) ::  z0_l   !<
    2835 
    2836        REAL(wp) ::  logyc1   !<
    2837        REAL(wp) ::  ycb      !<       
    2838        REAL(wp) ::  yc1      !<
     2834       INTEGER(iwp) ::  jwc                 !<
     2835       INTEGER(iwp) ::  j1                  !<
     2836
     2837       REAL(wp), INTENT(IN)  ::  z0_l       !<
     2838       REAL(wp), INTENT(OUT) ::  logyc1     !<
     2839
     2840       REAL(wp) ::  ycb                     !<       
     2841       REAL(wp) ::  yc1                     !<
    28392842       
    28402843!
     
    28492852       IF ( yc1 < ( REAL( nysg, KIND=wp ) + 0.5_wp ) * dy  )  THEN
    28502853          lc = -99
     2854          logyc1 = 1.0_wp
    28512855       ELSE IF ( yc1 > ( REAL( nyng, KIND=wp ) + 0.5_wp ) * dy )  THEN
    28522856          lc = -99
     2857          logyc1 = 1.0_wp
    28532858       ELSE
    28542859!
     
    28862891       INTEGER(iwp), INTENT(OUT) ::  lc     !<
    28872892
    2888        INTEGER(iwp) ::  iwc      !<
    2889        INTEGER(iwp) ::  i1       !<
    2890 
    2891        REAL(wp), INTENT(IN) ::  z0_l   !<
    2892 
    2893        REAL(wp) ::  logxc1   !<
    2894        REAL(wp) ::  xcb      !<
    2895        REAL(wp) ::  xc1      !<
     2893       INTEGER(iwp) ::  iwc                 !<
     2894       INTEGER(iwp) ::  i1                  !<
     2895
     2896       REAL(wp), INTENT(IN)  ::  z0_l       !<
     2897       REAL(wp), INTENT(OUT) ::  logxc1     !<
     2898
     2899       REAL(wp) ::  xcb                     !<
     2900       REAL(wp) ::  xc1                     !<
    28962901
    28972902!
     
    29062911       IF ( xc1 < ( REAL( nxlg, KIND=wp ) + 0.5_wp ) * dx  )  THEN
    29072912          lc = -99
     2913          logxc1 = 1.0_wp
    29082914       ELSE IF ( xc1 > ( REAL( nxrg, KIND=wp ) + 0.5_wp ) * dx )  THEN
    29092915          lc = -99
     2916          logxc1 = 1.0_wp
    29102917       ELSE   
    29112918!
Note: See TracChangeset for help on using the changeset viewer.