C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/sannino/OASIS_3.0_Coupler/pkg/oasis_grid.F,v 1.1 2006/07/20 21:08:16 sannino Exp $ C $Name: $ #include "OASIS_OPTIONS.h" SUBROUTINE OASIS_GRID( myThid ) C /==========================================================\ C | SUBROUTINE OASIS_GRID | C | o Gather all the GRIDs and MASKs variable needed to OASIS| C | | C \==========================================================/ IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "EESUPPORT.h" #include "PARAMS.h" #include "GRID.h" C === Routine arguments === C myThid - Number of this instance of OASIS_GRID INTEGER myThid C !LOCAL VARIABLES: C == Local variables == INTEGER iG, jG, bi, bj, I, J, K c _RL XC_global (Nx,Ny) c _RL YC_global (Nx,Ny) c _RL XG_global (Nx,Ny) c _RL YG_global (Nx,Ny) c _RL maskC_global (Nx,Ny) c _RL maskS_global (Nx,Ny) c _RL maskW_global (Nx,Ny) c _RL rA_global (Nx,Ny) c _RL rAW_global (Nx,Ny) c _RL rAS_global (Nx,Ny) c _RL rAZ_global (Nx,Ny) CALL GATHER_2D( XC_global, XC, myThid ) CALL GATHER_2D( YC_global, YC, myThid ) CALL GATHER_2D( XG_global, XG, myThid ) CALL GATHER_2D( YG_global, YG, myThid ) cgm **** attenzione ai bi bj cgm *** cgm *** La maskera deve essere invertita per OASIS DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO k=1,Nr DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx IF (maskC(i,j,k,bi,bj).eq.1.) maskC(i,j,k,bi,bj) = 2. IF (maskW(i,j,k,bi,bj).eq.1.) maskW(i,j,k,bi,bj) = 2. IF (maskS(i,j,k,bi,bj).eq.1.) maskS(i,j,k,bi,bj) = 2. IF (maskC(i,j,k,bi,bj).eq.0.) maskC(i,j,k,bi,bj) = 3. IF (maskW(i,j,k,bi,bj).eq.0.) maskW(i,j,k,bi,bj) = 3. IF (maskS(i,j,k,bi,bj).eq.0.) maskS(i,j,k,bi,bj) = 3. ENDDO ENDDO ENDDO DO k=1,Nr DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx IF (maskC(i,j,k,bi,bj).eq.2.) maskC(i,j,k,bi,bj) = 0. IF (maskW(i,j,k,bi,bj).eq.2.) maskW(i,j,k,bi,bj) = 0. IF (maskS(i,j,k,bi,bj).eq.2.) maskS(i,j,k,bi,bj) = 0. IF (maskC(i,j,k,bi,bj).eq.3.) maskC(i,j,k,bi,bj) = 1. IF (maskW(i,j,k,bi,bj).eq.3.) maskW(i,j,k,bi,bj) = 1. IF (maskS(i,j,k,bi,bj).eq.3.) maskS(i,j,k,bi,bj) = 1. ENDDO ENDDO ENDDO ENDDO ENDDO cgm ********************************** CALL GATHER_2D( maskC_global, maskC(:,:,1,1,1), myThid ) CALL GATHER_2D( maskW_global, maskW(:,:,1,1,1), myThid ) CALL GATHER_2D( maskS_global, maskS(:,:,1,1,1), myThid ) DO bj=myByLo(myThid),myByHi(myThid) DO bi=myBxLo(myThid),myBxHi(myThid) DO k=1,Nr DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx IF (maskC(i,j,k,bi,bj).eq.1.) maskC(i,j,k,bi,bj) = 2. IF (maskW(i,j,k,bi,bj).eq.1.) maskW(i,j,k,bi,bj) = 2. IF (maskS(i,j,k,bi,bj).eq.1.) maskS(i,j,k,bi,bj) = 2. IF (maskC(i,j,k,bi,bj).eq.0.) maskC(i,j,k,bi,bj) = 3. IF (maskW(i,j,k,bi,bj).eq.0.) maskW(i,j,k,bi,bj) = 3. IF (maskS(i,j,k,bi,bj).eq.0.) maskS(i,j,k,bi,bj) = 3. ENDDO ENDDO ENDDO DO k=1,Nr DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx IF (maskC(i,j,k,bi,bj).eq.2.) maskC(i,j,k,bi,bj) = 0. IF (maskW(i,j,k,bi,bj).eq.2.) maskW(i,j,k,bi,bj) = 0. IF (maskS(i,j,k,bi,bj).eq.2.) maskS(i,j,k,bi,bj) = 0. IF (maskC(i,j,k,bi,bj).eq.3.) maskC(i,j,k,bi,bj) = 1. IF (maskW(i,j,k,bi,bj).eq.3.) maskW(i,j,k,bi,bj) = 1. IF (maskS(i,j,k,bi,bj).eq.3.) maskS(i,j,k,bi,bj) = 1. ENDDO ENDDO ENDDO ENDDO ENDDO cgm cgm CALL GATHER_2D( rAS_global, rAS, myThid ) CALL GATHER_2D( rAW_global, rAW, myThid ) CALL GATHER_2D( rA_global, rA, myThid ) CALL GATHER_2D( rAz_global, rAz, myThid ) IF( mpiMyId .EQ. 0 ) THEN CALL OASIS_GRID_WRITE ENDIF _BARRIER return end