Ignore:
Timestamp:
Jun 13, 2025, 8:19:58 PM (3 weeks ago)
Author:
yann meurdesoif
Message:

Convection GPU porting : separate initialisation phase of computing phase for cva_driver and cv3_routines (remove saved first/debut variable type from computing routine)
YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/cv3_routines.f90

    r5695 r5696  
    33MODULE cv3_routines_mod
    44  PRIVATE
    5 
     5! for cv3_feed
     6  LOGICAL, SAVE :: cv3_feed_first =.TRUE.
     7  LOGICAL, SAVE :: ok_new_feed
     8!$OMP THREADPRIVATE (first,ok_new_feed)
    69  PUBLIC cv3_param, cv3_incrcount, cv3_prelim, cv3_feed, cv3_undilute1, cv3_trigger, cv3_compress, &
    710         icefrac, cv3_undilute2, cv3_closure, cv3_mixing, cv3_unsat, cv3_yield, cv3_tracer, cv3_uncompress,&
    8          cv3_epmax_fn_cape
     11         cv3_epmax_fn_cape, cv3_routine_pre
    912CONTAINS
    1013
    11 
    12 
     14SUBROUTINE cv3_routine_pre(ok_conserv_q)
     15  LOGICAL, INTENT (IN)                               :: ok_conserv_q
     16 
     17  CALL cv3_feed_pre(ok_conserv_q)
     18
     19END SUBROUTINE cv3_routine_pre
    1320
    1421SUBROUTINE cv3_param(nd, k_upper, delt)
     
    314321END SUBROUTINE cv3_prelim
    315322
     323
     324SUBROUTINE cv3_feed_pre(ok_conserv_q)
     325USE mod_phys_lmdz_transfert_para, ONLY : bcast
     326IMPLICIT NONE
     327  LOGICAL, INTENT (IN)                               :: ok_conserv_q
     328  INTEGER :: iostat
     329
     330  IF (cv3_feed_first) THEN
     331
     332!$OMP MASTER
     333    ok_new_feed = ok_conserv_q
     334    OPEN (98, FILE='cv3feed_param.data', STATUS='old', FORM='formatted', IOSTAT=iostat)
     335    IF (iostat==0) THEN
     336      READ (98, *, END=998) ok_new_feed
     337998   CONTINUE
     338      CLOSE (98)
     339    END IF
     340    PRINT *, ' ok_new_feed: ', ok_new_feed
     341!$OMP END MASTER
     342    call bcast(ok_new_feed)
     343    cv3_feed_first = .FALSE.   
     344  END IF
     345
     346END SUBROUTINE cv3_feed_pre
     347
     348
    316349SUBROUTINE cv3_feed(len, nd, ok_conserv_q, &
    317350                    t, q, u, v, p, ph, h, gz, &
     
    320353                    cpnk, hnk, nk, icb, icbmax, iflag, gznk, plcl)
    321354
    322   USE mod_phys_lmdz_transfert_para, ONLY : bcast
    323355  USE add_phys_tend_mod, ONLY: fl_cor_ebil
    324356  USE print_control_mod, ONLY: prt_level
     
    374406
    375407!jyg20140217<
    376   INTEGER iostat
    377   LOGICAL, SAVE :: first
    378   LOGICAL, SAVE :: ok_new_feed
    379   REAL, SAVE :: dp_lcl_feed
    380 !$OMP THREADPRIVATE (first,ok_new_feed,dp_lcl_feed)
    381   DATA first/.TRUE./
    382   DATA dp_lcl_feed/2./
    383 
    384   IF (first) THEN
    385 !$OMP MASTER
    386     ok_new_feed = ok_conserv_q
    387     OPEN (98, FILE='cv3feed_param.data', STATUS='old', FORM='formatted', IOSTAT=iostat)
    388     IF (iostat==0) THEN
    389       READ (98, *, END=998) ok_new_feed
    390 998   CONTINUE
    391       CLOSE (98)
    392     END IF
    393     PRINT *, ' ok_new_feed: ', ok_new_feed
    394 !$OMP END MASTER
    395     call bcast(ok_new_feed)
    396     first = .FALSE.   
    397   END IF
     408  REAL, PARAMETER :: dp_lcl_feed = 2.
     409
    398410!jyg>
    399411! -------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.