c Rutina 053 c---------------------------------------------------------------CANOR--- C SUBROUTINE CANOR(B11,B22,GAMMA,BMAS,AMAS,BMEN,AMEN,MU1,MU2,T1,T2, * XP,YP,X1,Y1,X2,Y2,C) C C La rutina CANOR Calcula la matriz Cij del termino libre C analiticamente segun la formulacion de Vlado. C C Todo esta expresado en ejes principales del material C IMPLICIT NONE C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES EXTERNAS (ENTRADA) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C B11,B12 : coeficientes de la ley de comportamiento REAL*8 B11,B22 C GAMMA,BMAS,AMAS,AMEN : constantes (solucion fundamental) REAL*8 GAMMA,BMAS,AMAS,AMEN C BMEN : coeficiente del polinomio caracteristico COMPLEX*16 BMEN C MU1,MU2 : Solucion del polinomio caracteristico COMPLEX*16 MU1,MU2 C XP,YP : Coordenadas del punto de colocacion REAL*8 XP,YP C X1,Y1,X2,Y2 : Coordenadas de los nodos anterior y posterior REAL*8 X1,Y1,X2,Y2 C T1(,),T2(,) : COMPLEX*16 T1(2,2),T2(2,2) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES EXTERNAS (SALIDA) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C(,) : Termino libre REAL*8 C(2,2) C CCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES INTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCC C REAL*8 R(2,2),RL1(2,2),RL2(2,2),ALAN(2),RLAN(2) COMPLEX*16 IC,Z,Z1,Z2 REAL*8 XB,XA,YB,YA,X,Y,PI,EL1,EL2,L REAL*8 ARG0,RMOD,DIS,CMOD INTEGER I,J C LA FUNCION CMOD() CALCULA EL MODULO DE UN COMPLEJO C LA FUNCION DIS() CALCULA LA DISTANCIA ENTRE DOS PUNTOS C LA FUNCION RMOD() CALCULA EL MODULO DE UN VECTOR CMOD(Z)=DSQRT(DREAL(Z)*DREAL(Z)+DIMAG(Z)*DIMAG(Z)) DIS(XA,YA,XB,YB)=DSQRT((XB-XA)*(XB-XA)+(YB-YA)*(YB-YA)) RMOD(X,Y)=DSQRT(X*X+Y*Y) C CCCCCCCCCCCCCCC C RUTINA CCCCCCCCCCCCCCC C PI=4.D00*DATAN(1.D00) IC=(0.D00,1.D00) EL1=DIS(XP,YP,X1,Y1) EL2=DIS(XP,YP,X2,Y2) C R(I,J) ES LA COORDENADA J DEL VECTOR UNITARIO TANGENTE AL C CONTORNO (DISCRETIZADO) POR EL LADO I R(1,1)=(X1-XP)/EL1 R(1,2)=(Y1-YP)/EL1 R(2,1)=(X2-XP)/EL2 R(2,2)=(Y2-YP)/EL2 C RL1(L,J) ES LA COORDENADA J DEL VECTOR R1 ASOCIADO A LA RAIZ C L DEL POLINOMIO CARACTERISTICO RL1(1,1)=R(1,1)+DREAL(MU1)*R(1,2) RL1(1,2)=DIMAG(MU1)*R(1,2) IF (.NOT.(MU1.EQ.MU2)) THEN RL1(2,1)=R(1,1)+DREAL(MU2)*R(1,2) RL1(2,2)=DIMAG(MU2)*R(1,2) END IF RL2(1,1)=R(2,1)+DREAL(MU1)*R(2,2) RL2(1,2)=DIMAG(MU1)*R(2,2) IF (.NOT.(MU1.EQ.MU2)) THEN RL2(2,1)=R(2,1)+DREAL(MU2)*R(2,2) RL2(2,2)=DIMAG(MU2)*R(2,2) END IF IF(CMOD(BMEN).NE.0.D00) THEN DO L=1,2 ALAN(L)=DSIGN(1.D00,R(1,1)*R(2,2)-R(1,2)*R(2,1))*DATAN2( * DABS(-(RL1(L,1)*RL2(L,2)-RL1(L,2)*RL2(L,1))), * -RL1(L,1)*RL2(L,1)-RL1(L,2)*RL2(L,2)) RLAN(L)=DLOG(RMOD(RL1(L,1),RL1(L,2))/ * RMOD(RL2(L,1),RL2(L,2))) END DO END IF IF((DIMAG(BMEN)).NE.0.D00) THEN ! si BETA MENOS es imaginario DO I=1,2 C(I,I)=0.5D00 DO L=1,2 C(I,I)=C(I,I)+DREAL(1.D00-((-1.D00)**(I+L))*GAMMA/(IC* * BMEN*BMAS))*ALAN(L)/(4.D00*PI) END DO END DO C(1,2)=0.D00 C(2,1)=0.D00 DO L=1,2 C(1,2)=C(1,2)+DREAL((AMAS/BMAS)+((-1.D00)**(L))* * AMEN/(IC*BMEN))*RLAN(L)/(4.D00*PI*DSQRT(2.D0*B22)) C(2,1)=C(2,1)+DREAL((-1.D00)*AMAS/BMAS+((-1.D00)**(L))* * AMEN/(IC*BMEN))*RLAN(L)/(4.D0*PI*DSQRT(2.D0*B11)) END DO ELSE IF((DREAL(BMEN)).NE.0.D00) THEN ! si BETA MENOS es real + DO I=1,2 C(I,I)=0.5D00 DO L=1,2 C(I,I)=C(I,I)+DREAL((ALAN(L)+((-1.D00)**(I+L))*GAMMA* * RLAN(L)/(BMEN*BMAS))/(4.D00*PI)) END DO END DO C(1,2)=0.D00 C(2,1)=0.D00 DO L=1,2 C(1,2)=C(1,2)+DREAL((AMAS*RLAN(L)/BMAS)+ * ((-1.D00)**(L))*AMEN*ALAN(L)/BMEN)/(4.D00*PI* * DSQRT(2.D00*B22)) C(2,1)=C(2,1)+DREAL((-1.D00)*(AMAS*RLAN(L)/BMAS)+ * ((-1.D00)**(L))*AMEN*ALAN(L)/BMEN)/(4.D00*PI* * DSQRT(2.D00*B11)) END DO ELSE ! BETA MENOS es cero Z1=DCMPLX(RL1(1,1),RL1(1,2)) Z2=DCMPLX(RL2(1,1),RL2(1,2)) ARG0=DATAN2(DIMAG(Z1/Z2),DREAL(Z1/Z2)) IF (ARG0.LT.0.D00) THEN ARG0=2.*PI+ARG0 END IF DO I=1,2 DO J=1,2 C(I,J)=DREAL(-T1(I,J)*(DLOG(CMOD(Z1)/CMOD(Z2))+IC* * ARG0)+T2(I,J)*(CONJG(Z2)/Z2-CONJG(Z1)/Z1)) END DO END DO END IF END IF RETURN C END C