Ignore:
Timestamp:
Jul 1, 2025, 5:07:30 PM (4 days ago)
Author:
jyg
Message:

Correction of a bug found by Catherine Rio in pbl_surface_mod.F90:
modif = use of smallestreal in order to prevent division by 0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r5669 r5744  
    7676  !$OMP THREADPRIVATE(ok_bug_zg_wk_pbl)
    7777
     78
     79!JYG<
     80  REAL, SAVE, PROTECTED     :: smallestreal
     81  !$OMP THREADPRIVATE(smallestreal)
     82
    7883!FC
    7984!  integer, save :: iflag_frein
     
    116121    CHARACTER(len=80)             :: abort_message
    117122    CHARACTER(len = 20)           :: modname = 'pbl_surface_init'
     123
     124!****************************************************************************************
     125! Initialize some module variables
     126!****************************************************************************************   
     127    smallestreal = tiny(smallestreal)
    118128   
    119129!****************************************************************************************
     
    38523862     ! u10m, v10m : composantes du vent a 10m sans spirale de Ekman
    38533863          ustar(i,nsrf)=yustar(j)
    3854           u10m(i,nsrf)=(yu10m(j) * uzon(j))/SQRT(uzon(j)**2+vmer(j)**2)
    3855           v10m(i,nsrf)=(yu10m(j) * vmer(j))/SQRT(uzon(j)**2+vmer(j)**2)
     3864          u10m(i,nsrf)=(yu10m(j) * uzon(j))/max(SQRT(uzon(j)**2+vmer(j)**2), smallestreal)
     3865          v10m(i,nsrf)=(yu10m(j) * vmer(j))/max(SQRT(uzon(j)**2+vmer(j)**2), smallestreal)
    38563866!
    38573867          DO k = 1, 6
     
    38673877     ! u10m, v10m : composantes du vent a 10m sans spirale de Ekman
    38683878          ustar_x(i,nsrf)=yustar_x(j)
    3869           u10m_x(i,nsrf)=(yu10m_x(j) * uzon_x(j))/SQRT(uzon_x(j)**2+vmer_x(j)**2)
    3870           v10m_x(i,nsrf)=(yu10m_x(j) * vmer_x(j))/SQRT(uzon_x(j)**2+vmer_x(j)**2)
     3879          u10m_x(i,nsrf)=(yu10m_x(j) * uzon_x(j))/max(SQRT(uzon_x(j)**2+vmer_x(j)**2), smallestreal)
     3880          v10m_x(i,nsrf)=(yu10m_x(j) * vmer_x(j))/max(SQRT(uzon_x(j)**2+vmer_x(j)**2), smallestreal)
    38713881!
    38723882          DO k = 1, 6
     
    38813891     ! u10m, v10m : composantes du vent a 10m sans spirale de Ekman
    38823892          ustar_w(i,nsrf)=yustar_w(j)
    3883           u10m_w(i,nsrf)=(yu10m_w(j) * uzon_w(j))/SQRT(uzon_w(j)**2+vmer_w(j)**2)
    3884           v10m_w(i,nsrf)=(yu10m_w(j) * vmer_w(j))/SQRT(uzon_w(j)**2+vmer_w(j)**2)
     3893          u10m_w(i,nsrf)=(yu10m_w(j) * uzon_w(j))/max(SQRT(uzon_w(j)**2+vmer_w(j)**2), smallestreal)
     3894          v10m_w(i,nsrf)=(yu10m_w(j) * vmer_w(j))/max(SQRT(uzon_w(j)**2+vmer_w(j)**2), smallestreal)
    38853895!
    38863896          ustar(i,nsrf) = ustar_x(i,nsrf) + wake_s(i)*(ustar_w(i,nsrf)-ustar_x(i,nsrf))
Note: See TracChangeset for help on using the changeset viewer.