[updated 7.Jan.2010]
Librairie ef3d > Fichier selkco.f |
SUBROUTINE SELKCO (K,NDIM,CORLOC)
Auteur : D.Martin (Janvier 2000)
Derniere modification : D.Martin (15 decembre 2009)
Version 3
Coordonnees des noeuds de l'element de reference pour le segment de
Lagrange (ordre k) a (k+1) noeuds aux abscisses equidistantes ou
aux abcsisses de Gauss-Lobatto.
-- Arguments --
K pour segment de type k
k= 1 a 99 --> segment de Lagrange P0 a k+1 noeuds equidistants
k=101 a 102 --> segment de Lagrange P0 a 2 ou 3 noeuds equi. ou GL
k=103 a 199 --> segment de Lagrange P0 a k+1 noeuds de Gauss-Lobatto
NDIM dimension d'espace
CORLOC tableau des coordonnees des noeuds
IMPLICIT NONE
INTEGER K,NDIM
REAL CORLOC(NDIM,*)
INTEGER LAGDMX
PARAMETER ( LAGDMX = 100 )
DOUBLE PRECISION COGAUS((LAGDMX-1)/2),POGAUS((LAGDMX-1)/2)
INTEGER J,KNEW
REAL COR,UNSURK
RAPPEL : Les noeuds sont ranges comme suit
2----1 2---3---1 2---4---3---1 2---5---4---3---1 2---6---5---4---3---1
k=1 k=2 k=3 k=4 k=5
i.e. les points internes son ranges par abscisse decroissante
et le point numero 1 est le point d'abcisse 1.;
le point numero 2 est le point d'abcisse 0,;
le point numero 3 est a l'abcisse 1-1/k pour les abscisses equidistantes;
est le point de Gauss-Lobatto de plus grande abscisse
differente de 1 pour les noeuds aux points de Gauss-Lobatto.
KNEW=K
IF (KNEW.GT.LAGDMX) KNEW=KNEW-LAGDMX
IF (KNEW.EQ.0) THEN
Point milieu
CORLOC(1,1)=1./2
ELSEIF (KNEW.LE.2.OR.K.LE.LAGDMX) THEN
Abcsisses equidistantes (0 < k < 103 )
COR=1.
UNSURK=1./KNEW
CORLOC(1,1)=1.
CORLOC(1,2)=0.
DO 1 J=3,KNEW+1
COR=COR-UNSURK
CORLOC(1,J)=COR
1 CONTINUE
ELSEIF (K.LT.2*LAGDMX) THEN
Abcsisses de Gauss-Lobatto ( 102 < k < 200)
Version >= 3
CORLOC(1,1)=1.
CORLOC(1,2)=0.
CALL GAULOB (KNEW+1,COGAUS,POGAUS)
DO 2 J=1,KNEW/2
CORLOC(1,J+2) = (COGAUS(J)+1.)/2.
CORLOC(1,KNEW+2-J) = 1. - CORLOC(1,J+2)
2 CONTINUE
* VERSION < 3
CALL GAUSLO (KNEW+1,COGAUS,POGAUS)
*
DO 2 J=3,(KNEW+4)/2
CORLOC(1,J)=1.-COGAUS(J-2)
CORLOC(1,KNEW+4-J)=COGAUS(J-2)
2 CONTINUE
ENDIF
File history
Version 3 : D.Martin & L.Goudenege (14 decembre 2009)
- version incorporee dans Melina
Version 3 : L.Goudenege (3 avril 2009)
- generalisation a tous degres (limite au degre 100 !)
Version 2 : D.Martin (04 juillet 2005)
- ajout des noeuds aux points de Gauss-Lobatto de degree 11 a 20, 24, 32, 40
Version 0 : D.Martin & G. Vial (30 Août 2001)
END !SelkCo
selkco est appelé dans (5 procédures)