vmorth
C VMORTH SOURCE GOUNAND 25/10/23 21:15:12 12385 SUBROUTINE VMORTH(X,N,NX,XPRE,R) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : VMORTH C DESCRIPTION : Verifie qu'une matrice X est orthonormale a XPRE pres C sinon erreur. C C C LANGAGE : ESOPE C AUTEUR : Stephane GOUNAND (CEA/DES/ISAS/DM2S/SEMT/LTA) C mel : gounand@semt2.smts.cea.fr C*********************************************************************** C*********************************************************************** C SYNTAXE GIBIANE : C ENTREES : X, NX, XPRE C ENTREES/SORTIES : R (espace de stockage de dimension nx,nx) C SORTIES : C*********************************************************************** C VERSION : v1, 20/10/2025, version initiale C HISTORIQUE : v1, 20/10/2021, creation C HISTORIQUE : C HISTORIQUE : C*********************************************************************** -INC PPARAM -INC CCOPTIO * dimension x(nx,nx) dimension r(nx,nx) * * Executable statements * * les vecteurs dans x forment ils bien une base orthonormee ? do j=1,n do i=1,n r(i,j)=0.d0 enddo enddo do j=1,n do i=1,n do l=1,n r(i,j)=r(i,j)+x(l,i)*x(l,j) enddo enddo enddo do j=1,n do i=1,n if (i.ne.j) then if (abs(r(i,j)).gt.xpre) then write(6,*) '!!!! Vecteurs colonnes ',i,' et ',j $ ,' non orthogonaux, pscal=',r(i,j) goto 9999 endif else if ((abs(r(j,j)-1.d0)).gt.xpre) then write(6,*) 'Vecteur colonne ',j $ ,' non unitaire, norme=',r(j,j) goto 9999 endif endif enddo enddo * * Normal termination * RETURN * * Format handling * * * Error handling * 9999 CONTINUE MOTERR(1:8)='VMORTH' RETURN * * End of subroutine VMORTH * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales