Ignore:
Timestamp:
Aug 10, 2009, 1:45:04 PM (15 years ago)
Author:
jghattas
Message:
  • Inclusion d'un premier version du cycle de carbon dans LMDZ. Attention

!! Il s'agit d'un version ou les nouveaux cles cycle_carbon_tr et
cycle_carbon_cpl ne sont pas teste. Avec les ancinenes parametres le
modele donne les memes resultats qu'avant. L'interface avec ORCHIDEE n'a
pas encore etait modifie.

  • physiq.F, phys_cal_mod.F90 : ajout d'un nouveau module qui contient qq parametres pour le calendrier et le pas de temps acutelle de la physiq. Ce module pourrait etre elargie plus tard / LF + JG


  • infotrac.F90 : les noms du traceurs peut prendre un nom plus long (15 caracteres) dans traceur.def
File:
1 edited

Legend:

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

    r1152 r1227  
    3939!*************************************************************************************
    4040! variable for coupling period
    41   INTEGER, SAVE                             :: nexca
     41  INTEGER, SAVE :: nexca
    4242  !$OMP THREADPRIVATE(nexca)
    4343
     
    9595!
    9696  SUBROUTINE cpl_init(dtime, rlon, rlat)
     97    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, fco2_ocn_day
    9798
    9899    INCLUDE "dimensions.h"
     
    183184    sum_error = sum_error + error
    184185
    185     IF (cpl_carbon_cycle) THEN
     186    IF (carbon_cycle_cpl) THEN
    186187       ALLOCATE(read_co2(iim, jj_nb), stat = error)
    187188       sum_error = sum_error + error
    188189       ALLOCATE(cpl_atm_co2(klon,2), stat = error)
     190       sum_error = sum_error + error
     191
     192! Allocate variable in carbon_cycle_mod
     193       ALLOCATE(fco2_ocn_day(klon), stat = error)
    189194       sum_error = sum_error + error
    190195    END IF
     
    275280    USE surface_data
    276281    USE phys_state_var_mod, ONLY : rlon, rlat
    277 
     282    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl
     283   
    278284    INCLUDE "indicesol.h"
    279285    INCLUDE "temps.h"
     
    364370      ENDIF
    365371
    366        IF (cpl_carbon_cycle) THEN
     372       IF (carbon_cycle_cpl) THEN
    367373!$OMP MASTER
    368374           read_co2(:,:) = tab_read_flds(:,:,idr_oceco2) ! CO2 flux
     
    403409! The temperature is transformed into 1D array with valid points from index 1 to knon.
    404410!
     411    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, fco2_ocn_day
    405412    INCLUDE "indicesol.h"
    406413
     
    418425! Local variables
    419426!*************************************************************************************
    420     INTEGER               :: i
    421     REAL, DIMENSION(klon) :: sic_new
     427    INTEGER                  :: i
     428    INTEGER, DIMENSION(klon) :: index
     429    REAL, DIMENSION(klon)    :: sic_new
    422430
    423431!*************************************************************************************
     
    430438    CALL cpl2gath(read_v0, v0_new, knon, knindex)
    431439
    432     IF (cpl_carbon_cycle) THEN
    433        WRITE(*,*) 'cpl_carbon_cycle TO BE DONE!!'
    434        !!    var_co2 will be a intent(out) argument
    435        !!    CALL cpl2gath(read_co2, var_co2, knon, knindex)
     440!*************************************************************************************
     441! Transform read_co2 into uncompressed 1D variable fco2_ocn_day added directly in
     442! the module carbon_cycle_mod
     443!
     444!*************************************************************************************
     445    IF (carbon_cycle_cpl) THEN
     446       DO i=1,klon
     447          index(i)=i
     448       END DO
     449       CALL cpl2gath(read_co2, fco2_ocn_day, klon, index)
    436450    END IF
     451
    437452!*************************************************************************************
    438453! The fields received from the coupler have to be weighted with the fraction of ocean
     
    511526! (it is done in cpl_send_seaice_fields).
    512527!
     528    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send
    513529    INCLUDE "indicesol.h"
    514530    INCLUDE "dimensions.h"
     
    531547    CHARACTER(len = 25)                     :: modname = 'cpl_send_ocean_fields'
    532548    CHARACTER(len = 80)                     :: abort_message
    533     REAL, DIMENSION(klon)                   :: atm_co2    ! JG: to be an INTENT(IN) if cpl_carbon_cycle
    534549
    535550!*************************************************************************************
     
    556571       cpl_tauy(1:knon,cpl_index) = 0.0
    557572       cpl_windsp(1:knon,cpl_index) = 0.0
    558        IF (cpl_carbon_cycle) cpl_atm_co2(1:knon,cpl_index) = 0.0
     573       IF (carbon_cycle_cpl) cpl_atm_co2(1:knon,cpl_index) = 0.0
    559574    ENDIF
    560575       
     
    587602            windsp(ig)      / FLOAT(nexca)
    588603
    589        IF (cpl_carbon_cycle) THEN
    590           atm_co2=286.
     604       IF (carbon_cycle_cpl) THEN
    591605          cpl_atm_co2(ig,cpl_index) = cpl_atm_co2(ig,cpl_index) + &
    592                atm_co2(ig)/ FLOAT(nexca)
     606               co2_send(knindex(ig))/ FLOAT(nexca)
    593607       END IF
    594608     ENDDO
     
    627641          sum_error = sum_error + error
    628642         
    629           IF (cpl_carbon_cycle) THEN
     643          IF (carbon_cycle_cpl) THEN
    630644             ALLOCATE(cpl_atm_co22D(iim,jj_nb), stat=error)
    631645             sum_error = sum_error + error
     
    675689            knon, knindex)
    676690
    677        IF (cpl_carbon_cycle) &
     691       IF (carbon_cycle_cpl) &
    678692            CALL gath2cpl(cpl_atm_co2(:,cpl_index), cpl_atm_co22D(:,:), knon, knindex)
    679693   ENDIF
     
    695709! the coupler.
    696710!
     711    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl
    697712    INCLUDE "indicesol.h"
    698713    INCLUDE "dimensions.h"
     
    803818          sum_error = sum_error + error
    804819
    805           IF (cpl_carbon_cycle) THEN
     820          IF (carbon_cycle_cpl) THEN
    806821             ALLOCATE(cpl_atm_co22D(iim,jj_nb), stat=error)
    807822             sum_error = sum_error + error
     
    926941! will be done in cpl_send_seaice_fields.
    927942!
     943
    928944    INCLUDE "dimensions.h"
    929945
     
    979995!   
    980996    USE surface_data
     997    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl
    981998! Some includes
    982999!*************************************************************************************
     
    10371054    IF (version_ocean=='nemo') THEN
    10381055       tab_flds(:,:,ids_liqrun) = cpl_rriv2D(:,:) + cpl_rcoa2D(:,:)
    1039        IF (cpl_carbon_cycle) tab_flds(:,:,ids_atmco2)=cpl_atm_co22D(:,:)
     1056       IF (carbon_cycle_cpl) tab_flds(:,:,ids_atmco2)=cpl_atm_co22D(:,:)
    10401057    ELSE IF (version_ocean=='opa8') THEN
    10411058       tab_flds(:,:,ids_shfoce) = cpl_sols2D(:,:,1)
     
    12321249    sum_error = sum_error + error
    12331250   
    1234     IF (cpl_carbon_cycle) THEN
     1251    IF (carbon_cycle_cpl) THEN
    12351252       DEALLOCATE(cpl_atm_co22D, stat=error )
    12361253       sum_error = sum_error + error
     
    12481265  SUBROUTINE cpl2gath(champ_in, champ_out, knon, knindex)
    12491266  USE mod_phys_lmdz_para
    1250 ! Cette routine ecrit un champ 'gathered' sur la grille 2D pour le passer
    1251 ! au coupleur.
     1267! Cette routine transforme un champs de la grille 2D recu du coupleur sur la grille
     1268! 'gathered' (la grille physiq comprime).
    12521269!
    12531270!
    12541271! input:         
    1255 !   champ_in     champ sur la grille gathere       
     1272!   champ_in     champ sur la grille 2D
    12561273!   knon         nombre de points dans le domaine a traiter
    12571274!   knindex      index des points de la surface a traiter
    12581275!
    12591276! output:
    1260 !   champ_out    champ sur la grille 2D
     1277!   champ_out    champ sur la grille 'gatherd'
    12611278!
    12621279    INCLUDE "dimensions.h"
Note: See TracChangeset for help on using the changeset viewer.