C Rutina 031 C-----------------------------------------------------NOR_ELT_POT_ANI--- C C SUBRUTINA NOR_ELT_POT_ANI C C CALCULO DE LA NORMAL A UN ELEMENTO EN UNA POSICION DADA C PARA PROBLEMA POTENCIAL 2D ANISOTROPO C C SUBROUTINE NOR_ELT_POT_ANI(MAT,NA,ELT,NOD) C IMPLICIT NONE INCLUDE '_param.for' INCLUDE '_struct.for' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C NOD.VARIABLES EXTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C MAT : Material RECORD /S_material/ MAT C NA : Normal al elemento REAL*8 NA C ELT : Elemento RECORD /S_elemento/ ELT C NOD : Nodos del problema RECORD /S_nodo/ NOD(N_MAX_NOD) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C NOD.VARIABLES INTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C N : Normal al elemento REAL*8 N(MAX_DIM) C MOD : Modulo del vector normal (antes de normalizar) REAL*8 MOD C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VALORES INICIALES CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CALCULO DEL VECTOR NORMAL CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SELECT CASE (ELT.TIP) C CASE(1) C C ELEMENTO LINEAL CONTINUO C N(1)= NOD(ELT.NG(2)).XYZo(2)-NOD(ELT.NG(1)).XYZo(2) N(2)=-NOD(ELT.NG(2)).XYZo(1)+NOD(ELT.NG(1)).XYZo(1) MOD=DSQRT(N(1)**2.d0+N(2)**2.d0) N(1)=N(1)/MOD N(2)=N(2)/MOD NA=DSQRT(MAT.PRP(1)*N(1)**2.d0+2.d0*MAT.PRP(2)*N(1)*N(2) @ +MAT.PRP(3)*N(2)**2.d0) C CASE DEFAULT WRITE(F_W,03201) ELT.TIP WRITE (*,03201) ELT.TIP STOP END SELECT C C FIN DE LA RUTINA C RETURN C C FORMATOS DE ESCRITURA C 03200 FORMAT(/,2x,'ERROR 03200 - NOR_ELT_POT_ANI - Error Programa (#', @ i1,'#)') 03201 FORMAT(/,2x,'ERROR 03201 - NOR_ELT_POT_ANI - Tipo de elemento ',i2 @ ,' no implementado.') C END C