C $Header: /u/gcmpack/MITgcm/pkg/exch2/w2_set_single_facet.F,v 1.4 2012/03/30 18:23:13 jmc Exp $ C $Name: $ #include "CPP_EEOPTIONS.h" #include "W2_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: W2_SET_SINGLE_FACET C !INTERFACE: SUBROUTINE W2_SET_SINGLE_FACET( myThid ) C !DESCRIPTION: C Set-up simple single facet (domain in 1 piece) topology C !USES: IMPLICIT NONE C Tile topology settings data structures #include "SIZE.h" #include "EEPARAMS.h" #include "W2_EXCH2_SIZE.h" #include "W2_EXCH2_PARAMS.h" #include "W2_EXCH2_TOPOLOGY.h" C !INPUT PARAMETERS: C myThid :: my Thread Id number C (Note: not relevant since threading has not yet started) INTEGER myThid C !LOCAL VARIABLES: C === Local variables === C msgBuf :: Informational/error message buffer CHARACTER*(MAX_LEN_MBUF) msgBuf INTEGER j CEOP WRITE(msgBuf,'(2A,I3,A)') 'W2_SET_SINGLE_FACET:', & ' preDefTopol=', preDefTopol, ' selected' CALL PRINT_MESSAGE( msgBuf, W2_oUnit,SQUEEZE_RIGHT,myThid ) C-- Number of facets: nFacets = 1 C-- Set Facet Edge connections (topology graph) ignoring any previous C setting from data.exch2 (Edges order: N,S,E,W <==> 1,2,3,4 ) C face 1 N(=1) edge connects to face 1 S(=2) edge: facet_link(1,1) = 1.2 C face 1 S(=2) edge connects to face 1 N(=1) edge: facet_link(2,1) = 1.1 C face 1 E(=3) edge connects to face 1 W(=4) edge: facet_link(3,1) = 1.4 C face 1 W(=4) edge connects to face 1 E(=3) edge: facet_link(4,1) = 1.3 C-- Facet dimension: take the 1rst 2 numbers from facet_dims (if correct) IF ( facet_dims(1).EQ.0 .AND. facet_dims(2).EQ.0 ) THEN C- Default: take global dimension from SIZE.h (will fail with blank tiles) facet_dims(1) = Nx facet_dims(2) = Ny ENDIF IF ( facet_dims(1).LE.0 .OR. facet_dims(2).LE.0 ) THEN WRITE(msgBuf,'(2A,2I5)') 'W2_SET_SINGLE_FACET:', & ' unvalid 1rst 2 dimensions:', facet_dims(1), facet_dims(2) CALL PRINT_MESSAGE( msgBuf, W2_oUnit,SQUEEZE_RIGHT,myThid ) CALL PRINT_ERROR( msgBuf, myThid ) CALL ALL_PROC_DIE( 0 ) STOP 'ABNORMAL END: S/R W2_SET_SINGLE_FACET: unvalid dims' ENDIF DO j=3,W2_maxNbFacets*2 IF ( facet_dims(j).NE.0 ) THEN WRITE(msgBuf,'(2A,I5)') 'W2_SET_SINGLE_FACET:', & ' no more than 2 dims (X,Y) expected for single facet' CALL PRINT_MESSAGE( msgBuf, W2_oUnit,SQUEEZE_RIGHT,myThid ) CALL PRINT_ERROR( msgBuf, myThid ) CALL ALL_PROC_DIE( 0 ) STOP 'ABNORMAL END: S/R W2_SET_SINGLE_FACET: unexpected dims' ENDIF ENDDO RETURN END