Changeset 1274 for LMDZ4/branches


Ignore:
Timestamp:
Dec 4, 2009, 3:26:20 PM (15 years ago)
Author:
Laurent Fairhead
Message:
  • possibilite de passer le module du stress du vent (activation ou pas via la namcouple Oasis)
  • petite correction OpenMP

AC

Location:
LMDZ4/branches/LMDZ4-dev/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/cpl_mod.F90

    r1227 r1274  
    4747  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_snow, cpl_evap, cpl_tsol
    4848  !$OMP THREADPRIVATE(cpl_snow,cpl_evap,cpl_tsol)
    49   REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_fder, cpl_albe, cpl_taux
    50   !$OMP THREADPRIVATE(cpl_fder,cpl_albe,cpl_taux)
     49  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_fder, cpl_albe, cpl_taux, cpl_tauy
     50  !$OMP THREADPRIVATE(cpl_fder,cpl_albe,cpl_taux,cpl_tauy)
    5151  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_windsp
    5252  !$OMP THREADPRIVATE(cpl_windsp)
     53  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_taumod
     54  !$OMP THREADPRIVATE(cpl_taumod)
    5355  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_atm_co2
    5456  !$OMP THREADPRIVATE(cpl_atm_co2)
    55   REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_tauy
    56   !$OMP THREADPRIVATE(cpl_tauy)
    5757  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_rriv2D, cpl_rcoa2D, cpl_rlic2D
    5858  !$OMP THREADPRIVATE(cpl_rriv2D,cpl_rcoa2D,cpl_rlic2D)
     
    8585  REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: cpl_taux2D, cpl_tauy2D
    8686  !$OMP THREADPRIVATE(cpl_taux2D, cpl_tauy2D)
     87  REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: cpl_taumod2D
     88  !$OMP THREADPRIVATE(cpl_taumod2D)
    8789  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_windsp2D
    8890  !$OMP THREADPRIVATE(cpl_windsp2D)
     
    161163    ALLOCATE(cpl_taux(klon,2), stat = error)
    162164    sum_error = sum_error + error
     165    ALLOCATE(cpl_tauy(klon,2), stat = error)
     166    sum_error = sum_error + error
    163167    ALLOCATE(cpl_windsp(klon,2), stat = error)
    164168    sum_error = sum_error + error
    165     ALLOCATE(cpl_tauy(klon,2), stat = error)
     169    ALLOCATE(cpl_taumod(klon,2), stat = error)
    166170    sum_error = sum_error + error
    167171    ALLOCATE(cpl_rriv2D(iim,jj_nb), stat=error)
     
    213217    idtime = INT(dtime)
    214218#ifdef CPP_COUPLE
    215 !$OMP MASTER   
    216219    CALL inicma
    217 !$OMP END MASTER
    218220#endif
    219221
     
    317319    is_modified=.FALSE.
    318320
    319 ! Check if right moment to recevie from coupler
     321! Check if right moment to receive from coupler
    320322    IF (MOD(itime, nexca) == 1) THEN
    321323       is_modified=.TRUE.
     
    571573       cpl_tauy(1:knon,cpl_index) = 0.0
    572574       cpl_windsp(1:knon,cpl_index) = 0.0
     575       cpl_taumod(1:knon,cpl_index) = 0.0
    573576       IF (carbon_cycle_cpl) cpl_atm_co2(1:knon,cpl_index) = 0.0
    574577    ENDIF
     
    600603            tauy(ig)        / FLOAT(nexca)     
    601604       cpl_windsp(ig,cpl_index) = cpl_windsp(ig,cpl_index) + &
    602             windsp(ig)      / FLOAT(nexca)
     605            windsp(ig)      / FLOAT(nexca)
     606       cpl_taumod(ig,cpl_index) =   cpl_taumod(ig,cpl_index) + &
     607          SQRT ( taux(ig)*taux(ig)+tauy(ig)*tauy(ig) ) / FLOAT (nexca)
    603608
    604609       IF (carbon_cycle_cpl) THEN
     
    639644          sum_error = sum_error + error
    640645          ALLOCATE(cpl_windsp2D(iim,jj_nb), stat=error)
     646          sum_error = sum_error + error
     647          ALLOCATE(cpl_taumod2D(iim,jj_nb,2), stat=error)
    641648          sum_error = sum_error + error
    642649         
     
    687694
    688695       CALL gath2cpl(cpl_windsp(:,cpl_index), cpl_windsp2D(:,:), &
     696            knon, knindex)
     697
     698       CALL gath2cpl(cpl_taumod(:,cpl_index), cpl_taumod2D(:,:,cpl_index), &
    689699            knon, knindex)
    690700
     
    758768       cpl_taux(1:knon,cpl_index) = 0.0
    759769       cpl_tauy(1:knon,cpl_index) = 0.0
     770       cpl_taumod(1:knon,cpl_index) = 0.0
    760771    ENDIF
    761772       
     
    784795            taux(ig)        / FLOAT(nexca)
    785796       cpl_tauy(ig,cpl_index) = cpl_tauy(ig,cpl_index) + &
    786             tauy(ig)        / FLOAT(nexca)     
     797            tauy(ig)        / FLOAT(nexca)     
     798       cpl_taumod(ig,cpl_index) = cpl_taumod(ig,cpl_index) + &
     799            SQRT ( taux(ig)*taux(ig)+tauy(ig)*tauy(ig) ) / FLOAT(nexca)
    787800    ENDDO
    788801
     
    816829          sum_error = sum_error + error
    817830          ALLOCATE(cpl_windsp2D(iim,jj_nb), stat=error)
     831          sum_error = sum_error + error
     832          ALLOCATE(cpl_taumod2D(iim,jj_nb,2), stat=error)
    818833          sum_error = sum_error + error
    819834
     
    864879
    865880       CALL gath2cpl(cpl_tauy(:,cpl_index), cpl_tauy2D(:,:,cpl_index), &
     881            knon, knindex)
     882
     883       CALL gath2cpl(cpl_taumod(:,cpl_index), cpl_taumod2D(:,:,cpl_index), &
    866884            knon, knindex)
    867885
     
    11291147          tab_flds(:,:,ids_totsno) = 0.0
    11301148          tab_flds(:,:,ids_toteva) = 0.0
     1149          tab_flds(:,:,ids_taumod) = 0.0
    11311150 
    11321151          tmp_taux(:,:)    = 0.0
     
    11381157             tmp_tauy = cpl_tauy2D(:,:,1) * pctsrf2D(:,:,is_oce) / deno(:,:) +    &
    11391158                  cpl_tauy2D(:,:,2) * pctsrf2D(:,:,is_sic) / deno(:,:)
    1140              
     1159
    11411160             tab_flds(:,:,ids_shftot) = cpl_sols2D(:,:,1) * pctsrf2D(:,:,is_oce) / deno(:,:) +    &
    11421161                  cpl_sols2D(:,:,2) * pctsrf2D(:,:,is_sic) / deno(:,:)
     
    11491168             tab_flds(:,:,ids_toteva) = cpl_evap2D(:,:,1) * pctsrf2D(:,:,is_oce) / deno(:,:) +    &
    11501169                  cpl_evap2D(:,:,2)  * pctsrf2D(:,:,is_sic) / deno(:,:)
     1170             tab_flds(:,:,ids_taumod) = cpl_taumod2D(:,:,1) * pctsrf2D(:,:,is_oce) / deno(:,:) +    &
     1171                  cpl_taumod2D(:,:,2) * pctsrf2D(:,:,is_sic) / deno(:,:)
     1172             
    11511173         ENDWHERE
    11521174
     
    12461268    DEALLOCATE(cpl_evap2D, cpl_tsol2D, cpl_fder2D, cpl_albe2D, stat=error )
    12471269    sum_error = sum_error + error
    1248     DEALLOCATE(cpl_taux2D, cpl_tauy2D, cpl_windsp2D, stat=error )
     1270    DEALLOCATE(cpl_taux2D, cpl_tauy2D, cpl_windsp2D, cpl_taumod2D, stat=error )
    12491271    sum_error = sum_error + error
    12501272   
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/oasis.F90

    r1249 r1274  
    4848  INTEGER, PARAMETER :: ids_rivflu = 23
    4949  INTEGER, PARAMETER :: ids_atmco2 = 24
    50   INTEGER, PARAMETER :: maxsend    = 24  ! Maximum number of fields to send
     50  INTEGER, PARAMETER :: ids_taumod = 25
     51  INTEGER, PARAMETER :: maxsend    = 25  ! Maximum number of fields to send
    5152 
    5253  ! Id for fields received from ocean
     
    156157    infosend(ids_calvin)%action = .TRUE. ; infosend(ids_calvin)%name = 'COCALVIN'
    157158   
    158    
    159159    IF (version_ocean=='nemo') THEN
    160160        infosend(ids_shftot)%action = .TRUE. ; infosend(ids_shftot)%name = 'COQSRMIX'
     
    165165        infosend(ids_icevap)%action = .TRUE. ; infosend(ids_icevap)%name = 'COICEVAP'
    166166        infosend(ids_liqrun)%action = .TRUE. ; infosend(ids_liqrun)%name = 'COLIQRUN'
     167        infosend(ids_taumod)%action = .TRUE. ; infosend(ids_taumod)%name = 'COTAUMOD'
    167168        IF (carbon_cycle_cpl) THEN
    168169            infosend(ids_atmco2)%action = .TRUE. ; infosend(ids_atmco2)%name = 'COATMCO2'
Note: See TracChangeset for help on using the changeset viewer.