osbd.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\osbd.f
00002 !
00079                      SUBROUTINE OSBD
00080 !                    ***************
00081 !
00082      & ( OP , X , Y , Z , C , MESH )
00083 !
00084 !***********************************************************************
00085 ! BIEF   V6P1                                   21/08/2010
00086 !***********************************************************************
00087 !
00088 !
00089 !
00090 !
00091 !
00092 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00093 !| C              |-->| A GIVEN CONSTANT USED IN OPERATION OP
00094 !| MESH           |-->| MESH STRUCTURE
00095 !| OP             |-->| OPERATION TO BE DONE (SEE ABOVE)
00096 !| X              |<--| RESULTING VECTOR
00097 !| Y              |-->| VECTOR USED IN OPERATION OP
00098 !| Z              |-->| VECTOR USED IN OPERATION OP
00099 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00100 !
00101       USE BIEF, EX_OSBD => OSBD
00102 !
00103       IMPLICIT NONE
00104       INTEGER LNG,LU
00105       COMMON/INFO/LNG,LU
00106 !
00107 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00108 !
00109       DOUBLE PRECISION, INTENT(IN) :: C
00110 !
00111       CHARACTER(LEN=8), INTENT(IN) :: OP
00112 !
00113       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
00114       TYPE(BIEF_OBJ), INTENT(IN)    :: Y,Z
00115       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
00116 !
00117 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00118 !
00119       INTEGER NPTFR,IELMX,IELMY
00120 !
00121 !-----------------------------------------------------------------------
00122 !
00123       IF(X%TYPE.NE.2.OR.Y%TYPE.NE.2) THEN
00124         IF (LNG.EQ.1) WRITE(LU,100)
00125         IF (LNG.EQ.2) WRITE(LU,101)
00126 100     FORMAT(1X,'OSBD (BIEF) : X ET Y NE SONT PAS DES VECTEURS')
00127 101     FORMAT(1X,'OSBD (BIEF) : X AND Y ARE NOT VECTORS')
00128         CALL PLANTE(1)
00129         STOP
00130       ENDIF
00131 !
00132       IELMX = X%ELM
00133       IELMY = Y%ELM
00134 !
00135       IF((DIMENS(IELMX).NE.1.OR.DIMENS(IELMY).NE.2).AND.
00136      &   (DIMENS(IELMX).NE.2.OR.DIMENS(IELMY).NE.3)) THEN
00137         IF (LNG.EQ.1) WRITE(LU,102)
00138         IF (LNG.EQ.2) WRITE(LU,103)
00139 102     FORMAT(1X,'OSBD (BIEF) : X ET Y ONT DE MAUVAISES DIMENSIONS')
00140 103     FORMAT(1X,'OSBD (BIEF) : X AND Y HAVE WRONG DIMENSIONS')
00141         CALL PLANTE(1)
00142         STOP
00143       ENDIF
00144 !
00145 !-----------------------------------------------------------------------
00146 !
00147       NPTFR = X%DIM1
00148 !
00149       IF(  IELMY.EQ.11.OR.
00150      &     IELMY.EQ.61.OR.
00151      &     IELMY.EQ.21.OR.
00152      &     IELMY.EQ.71.OR.
00153      &     IELMY.EQ.12.OR.
00154      &     IELMY.EQ.31.OR.
00155      &     IELMY.EQ.41.OR.
00156      &     IELMY.EQ.51      ) THEN
00157 !       ARRAY NBOR
00158         CALL OVBD( OP , X%R , Y%R , Z%R , C , MESH%NBOR%I , NPTFR )
00159 !
00160 !  JMH 23/06/2008: TEMPORARY: TO SEE WHO NEEDS IT
00161 !                  CREATES AN ERROR IN PARALLEL MODE BECAUSE
00162 !                  NELBOR CAN BE 0
00163 !
00164 !     ELSEIF(IELMY.EQ.10.OR.
00165 !    *       IELMY.EQ.20.OR.
00166 !    *       IELMY.EQ.30.OR.
00167 !    *       IELMY.EQ.70.OR.
00168 !    *       IELMY.EQ.40.OR.
00169 !    *       IELMY.EQ.50     ) THEN
00170 !       ARRAY NELBOR
00171 !       CALL OVBD( OP , X%R , Y%R , Z%R , C , MESH%NELBOR%I , NPTFR )
00172       ELSE
00173         IF (LNG.EQ.1) WRITE(LU,104)
00174         IF (LNG.EQ.2) WRITE(LU,105)
00175 104     FORMAT(1X,'OSBD (BIEF) : DISCRETISATIONS NON PREVUES')
00176 105     FORMAT(1X,'OSBD (BIEF) : DISCRETIZATIONS NOT IMPLEMENTED')
00177         CALL PLANTE(1)
00178         STOP
00179       ENDIF
00180 !
00181 !-----------------------------------------------------------------------
00182 !
00183       RETURN
00184       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0