dwnup1.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\dwnup1.f
00002 !
00114                      SUBROUTINE DWNUP1
00115 !                    *****************
00116 !
00117      &(X, A,B ,DITR,MESH)
00118 !
00119 !***********************************************************************
00120 ! BIEF   V6P1                                   21/08/2010
00121 !***********************************************************************
00122 !
00123 !
00124 !
00125 !
00126 !
00127 !
00128 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00129 !| A              |-->| MATRIX A IN LDU FORM
00130 !| B              |<--| RIGHT-HAND SIDE OF THE SYSTEM
00131 !| DITR           |-->| OPTION  'D' : MATRIX A IS TAKEN
00132 !|                |   |         'T' : MATRIX TRANSPOSED(A)
00133 !| MESH           |-->| MESH STRUCTURE
00134 !| X              |<--| SOLUTION OF SYSTEM AX = B
00135 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00136 !
00137       USE BIEF, EX_DWNUP1 => DWNUP1
00138 !
00139       IMPLICIT NONE
00140       INTEGER LNG,LU
00141       COMMON/INFO/LNG,LU
00142 !
00143 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00144 !
00145       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
00146       TYPE(BIEF_OBJ), INTENT(IN)    :: B
00147       TYPE(BIEF_OBJ), INTENT(IN)    :: A
00148       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
00149       CHARACTER(LEN=1), INTENT(IN)  :: DITR
00150 !
00151 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00152 !
00153       INTEGER IELM,NPOIN,NELEM,NELMAX
00154 !
00155       DOUBLE PRECISION C
00156 !
00157       CHARACTER*1 TYPD,TYPX
00158 !
00159 !-----------------------------------------------------------------------
00160 !
00161       TYPD  = A%TYPDIA
00162       TYPX  = A%TYPEXT
00163       NPOIN = A%D%DIM1
00164       IELM  = A%ELMLIN
00165       NELEM = MESH%NELEM
00166       NELMAX= MESH%NELMAX
00167       CALL CPSTVC(B,X)
00168 !
00169 !-----------------------------------------------------------------------
00170 !
00171 ! 1) DESCENT WITH COPY OF B IN X
00172 !
00173       IF(A%STO.EQ.1) THEN
00174         CALL DESCEN(X%R, A%X%R,TYPX,B%R,
00175      &       MESH%IKLE%I,NELEM,NELMAX,NPOIN,IELM,DITR,.TRUE.,MESH%LV)
00176       ELSEIF(A%STO.EQ.3) THEN
00177         CALL DESSEG(X%R, A%X%R,TYPX,B%R,
00178      &              MESH%GLOSEG%I,MESH%NSEG,NPOIN,DITR,.TRUE.)
00179       ENDIF
00180 !
00181 !-----------------------------------------------------------------------
00182 !
00183 ! 2) RESUMES INVERSIONS OF DIAGONAL MATRICES
00184 !
00185       IF(TYPD(1:1).NE.'I') THEN
00186         CALL OV( 'X=XY    ' , X%R , A%D%R , X%R , C , NPOIN )
00187       ENDIF
00188 !
00189 !-----------------------------------------------------------------------
00190 !
00191 ! 3) TRACES BACK WITHOUT PRELIMINARY COPY OF B IN X
00192 !
00193       IF(A%STO.EQ.1) THEN
00194         CALL REMONT(X%R, A%X%R,TYPX,B%R,
00195      &       MESH%IKLE%I,NELEM,NELMAX,NPOIN,IELM,DITR,.FALSE.,MESH%LV)
00196       ELSE
00197         CALL REMSEG(X%R, A%X%R,TYPX,B%R,
00198      &              MESH%GLOSEG%I,MESH%NSEG,NPOIN,DITR,.FALSE.)
00199       ENDIF
00200 !
00201 !-----------------------------------------------------------------------
00202 !
00203       RETURN
00204       END

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