Ignore:
Timestamp:
Jun 30, 2023, 8:18:43 PM (11 months ago)
Author:
yann meurdesoif
Message:

Suppress CPP_MPI key usage in source code. MPI wrappers is used to supress missing symbol if the mpi library is not linked

YM

File:
1 edited

Legend:

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

    r2952 r4600  
    421421       IF (knon /=0) THEN
    422422          CALL Init_orchidee_index(knon,orch_comm,knindex,offset,ktindex)
    423 
    424 #ifndef CPP_MPI
    425           ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
    426           CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, knon, ktindex, dtime, &
    427                lrestart_read, lrestart_write, lalo, &
    428                contfrac, neighbours, resolution, date0, &
    429                zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
    430                cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
    431                precip_rain, precip_snow, lwdown, swnet, swdown, ps, &
    432                evap, fluxsens, fluxlat, coastalflow, riverflow, &
    433                tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
    434                lon_scat, lat_scat, q2m, t2m &
     423         
     424          IF (.NOT. using_mpi) THEN
     425            ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
     426            CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, knon, ktindex, dtime, &
     427                 lrestart_read, lrestart_write, lalo, &
     428                 contfrac, neighbours, resolution, date0, &
     429                 zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
     430                 cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
     431                 precip_rain, precip_snow, lwdown, swnet, swdown, ps, &
     432                 evap, fluxsens, fluxlat, coastalflow, riverflow, &
     433                 tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
     434                 lon_scat, lat_scat, q2m, t2m &
    435435#ifdef ORCH_NEW
    436                , nb_fields_cpl, fields_cpl)
     436                 , nb_fields_cpl, fields_cpl)
    437437#else
    438                )
     438                 )
    439439#endif
    440440
    441 #else         
    442           ! Interface for ORCHIDEE version 1.9 or later(1.9.2, 1.9.3, 1.9.4, 1.9.5) compiled in parallel mode(with preprocessing flag CPP_MPI)
    443           CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, offset, knon, ktindex, &
    444                orch_comm, dtime, lrestart_read, lrestart_write, lalo, &
    445                contfrac, neighbours, resolution, date0, &
    446                zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
    447                cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
    448                precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown(1:knon), ps(1:knon), &
    449                evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
    450                tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
    451                lon_scat, lat_scat, q2m, t2m &
     441          ELSE         
     442            ! Interface for ORCHIDEE version 1.9 or later(1.9.2, 1.9.3, 1.9.4, 1.9.5) compiled in parallel mode(with preprocessing flag CPP_MPI)
     443            CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, offset, knon, ktindex, &
     444                 orch_comm, dtime, lrestart_read, lrestart_write, lalo, &
     445                 contfrac, neighbours, resolution, date0, &
     446                 zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
     447                 cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
     448                 precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown(1:knon), ps(1:knon), &
     449                 evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
     450                 tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
     451                 lon_scat, lat_scat, q2m, t2m &
    452452#ifdef ORCH_NEW
    453                , nb_fields_cpl, fields_cpl(1:knon,:))
     453                 , nb_fields_cpl, fields_cpl(1:knon,:))
    454454#else
    455                )
     455                 )
    456456#endif
    457 #endif
    458          
     457          ENDIF
    459458       ENDIF
    460459
     
    467466
    468467    IF (knon /=0) THEN
    469 #ifndef CPP_MPI
    470        ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
    471        CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat, knon, ktindex, dtime, &
    472             lrestart_read, lrestart_write, lalo, &
    473             contfrac, neighbours, resolution, date0, &
    474             zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
    475             cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
    476             precip_rain, precip_snow, lwdown, swnet, swdown_vrai, ps, &
    477             evap, fluxsens, fluxlat, coastalflow, riverflow, &
    478             tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
    479             lon_scat, lat_scat, q2m, t2m &
     468       IF (.NOT. using_mpi) THEN
     469         ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
     470         CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat, knon, ktindex, dtime, &
     471              lrestart_read, lrestart_write, lalo, &
     472              contfrac, neighbours, resolution, date0, &
     473              zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
     474              cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
     475              precip_rain, precip_snow, lwdown, swnet, swdown_vrai, ps, &
     476              evap, fluxsens, fluxlat, coastalflow, riverflow, &
     477              tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
     478              lon_scat, lat_scat, q2m, t2m &
    480479#ifdef ORCH_NEW
    481             , nb_fields_cpl, fields_cpl)
     480              , nb_fields_cpl, fields_cpl)
    482481#else
    483             )
     482              )
    484483#endif
     484       ELSE
     485         ! Interface for ORCHIDEE version 1.9 or later compiled in parallel mode(with preprocessing flag CPP_MPI)
     486         CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat,offset, knon, ktindex, &
     487              orch_comm,dtime, lrestart_read, lrestart_write, lalo, &
     488              contfrac, neighbours, resolution, date0, &
     489              zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
     490              cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
     491              precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown_vrai(1:knon), ps(1:knon), &
     492              evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
     493              tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
     494              lon_scat, lat_scat, q2m, t2m &
     495#ifdef ORCH_NEW
     496              , nb_fields_cpl, fields_cpl(1:knon,:))
    485497#else
    486        ! Interface for ORCHIDEE version 1.9 or later compiled in parallel mode(with preprocessing flag CPP_MPI)
    487        CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat,offset, knon, ktindex, &
    488             orch_comm,dtime, lrestart_read, lrestart_write, lalo, &
    489             contfrac, neighbours, resolution, date0, &
    490             zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
    491             cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
    492             precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown_vrai(1:knon), ps(1:knon), &
    493             evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
    494             tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
    495             lon_scat, lat_scat, q2m, t2m &
    496 #ifdef ORCH_NEW
    497             , nb_fields_cpl, fields_cpl(1:knon,:))
    498 #else
    499             )
     498              )
    500499#endif
    501 #endif
     500       ENDIF
    502501    ENDIF
    503502
     
    545544   
    546545    USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat
    547 
    548 #ifdef CPP_MPI
    549     INCLUDE 'mpif.h'
    550 #endif   
    551 
     546    USE lmdz_mpi
    552547
    553548! Input arguments
     
    564559! Local varables
    565560!****************************************************************************************
    566 #ifdef CPP_MPI
    567561    INTEGER, DIMENSION(MPI_STATUS_SIZE)   :: status
    568 #endif
    569562
    570563    INTEGER                               :: MyLastPoint
     
    580573   
    581574    IF (is_parallel) THEN
    582 #ifdef CPP_MPI   
    583575       CALL MPI_COMM_SIZE(orch_comm,mpi_size_orch,ierr)
    584576       CALL MPI_COMM_RANK(orch_comm,mpi_rank_orch,ierr)
    585 #endif
    586577    ELSE
    587578       mpi_rank_orch=0
     
    591582    IF (is_parallel) THEN
    592583       IF (mpi_rank_orch /= 0) THEN
    593 #ifdef CPP_MPI
    594584          CALL MPI_RECV(LastPoint,1,MPI_INTEGER,mpi_rank_orch-1,1234,orch_comm,status,ierr)
    595 #endif
    596585       ENDIF
    597586       
    598587       IF (mpi_rank_orch /= mpi_size_orch-1) THEN
    599 #ifdef CPP_MPI
    600588          CALL MPI_SEND(MyLastPoint,1,MPI_INTEGER,mpi_rank_orch+1,1234,orch_comm,ierr) 
    601 #endif
    602589       ENDIF
    603590    ENDIF
     
    617604!
    618605  SUBROUTINE Get_orchidee_communicator(knon,orch_comm)
    619    
    620 #ifdef CPP_MPI
    621     INCLUDE 'mpif.h'
    622 #endif   
    623 
     606  USE lmdz_mpi
    624607
    625608    INTEGER,INTENT(IN)  :: knon
     
    638621    ENDIF
    639622   
    640 #ifdef CPP_MPI   
    641623    CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    642 #endif
    643624   
    644625  END SUBROUTINE Get_orchidee_communicator
     
    650631    USE indice_sol_mod
    651632    USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat
    652 
    653 #ifdef CPP_MPI
    654     INCLUDE 'mpif.h'
    655 #endif   
     633    USE lmdz_mpi
    656634
    657635! Input arguments
     
    688666       knon_nb(:)=knon
    689667    ELSE 
    690        
    691 #ifdef CPP_MPI 
    692668       CALL MPI_GATHER(knon,1,MPI_INTEGER,knon_nb,1,MPI_INTEGER,0,COMM_LMDZ_PHY,ierr)
    693 #endif
    694        
    695669    ENDIF
    696670   
     
    714688       ktindex_g(:)=ktindex_p(:)
    715689    ELSE
    716        
    717 #ifdef CPP_MPI 
    718690       CALL MPI_GATHERV(ktindex_p,knon,MPI_INTEGER,ktindex_g,knon_nb,&
    719691            displs,MPI_INTEGER,0,COMM_LMDZ_PHY,ierr)
    720 #endif
    721        
    722692    ENDIF
    723693   
     
    776746          neighbours(:,i)=neighbours_g(:,i)
    777747       ELSE
    778 #ifdef CPP_MPI
    779748          IF (knon > 0) THEN
    780749             ! knon>0, scattter global field neighbours_g from master process to local process
     
    784753             CALL MPI_SCATTERV(neighbours_g(:,i),knon_nb,displs,MPI_INTEGER,var_tmp,knon,MPI_INTEGER,0,COMM_LMDZ_PHY,ierr)
    785754          END IF
    786 #endif
    787755       ENDIF
    788756    ENDDO
Note: See TracChangeset for help on using the changeset viewer.