C Rutina 040 C---------------------------------------------------------CONTACTO_CDC--- C C SUBRUTINA CONTACTO_CDC C C MONTAJE DE LAS CONDICIONES DE CONTORNO DE CONTACTO EN LOS NODODS C SUBROUTINE CONTACTO_CDC(PRB,SOL,MAT,ZCTO,CNT,ELT,NOD) C IMPLICIT NONE INCLUDE '_param.for' INCLUDE '_struct.for' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES EXTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C PRB : Variables globales del problema RECORD /S_problema/ PRB C SOL : Solidos del problema RECORD /S_solido/ SOL(N_MAX_SOL) C MAT : Solidos del problema RECORD /S_material/ MAT(N_MAX_SOL) C ZCTO : Zonas de contacto del problema RECORD /S_zncto/ ZCTO(N_MAX_ZCTO) C CNT : Contornos del problema RECORD /S_contorno/ CNT(N_MAX_CNT) xC ELTP : Tipos de elemento x RECORD /S_tipelt/ ELTP(N_MAX_TPEL) C ELT : Elementos del problema RECORD /S_elemento/ ELT(N_MAX_ELT) C NOD : Nodos del problema RECORD /S_nodo/ NOD(N_MAX_NOD) C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C VARIABLES INTERNAS CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C I : Contadores INTEGER I C Contadores INTEGER CNTA,CNTB C CINC : Contador del numero de incognitas INTEGER CINC C Ea,Eb : Factor de escala de las tensiones en los solidos A y B REAL*8 Ea,Eb C CCCCCCCCCCCCCCCCCCCCCCCCCC C VALORES INICIALES CCCCCCCCCCCCCCCCCCCCCCCCCC C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C APLICACION DE LAS CDC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Bucle que recorre las zonas de contacto C cinc=PRB.NINC+1 DO i = 1 , PRB.NZCTO C cntA=ZCTO(i).CNT(1) Ea=MAT(SOL(CNT(cntA).SOL).NUM).E cntB=ZCTO(i).CNT(2) Eb=MAT(SOL(CNT(cntB).SOL).NUM).E SELECT CASE(ZCTO(i).TIP) CASE(11) C CONTORNO FICTICIO C Comprueba que todos los nodos estan en adhesion xxxx CALL CNT_FICTICIO(ZCTO(i),CNT,PRB.ELTP,ELT,NOD) C Pasa las tensiones correspondientes a incognitas y C anhade dt como variable CALL CNT_CTO_DEBIL(CNT(cntA),Ea,PRB.ELTP,ELT,NOD,cinc,'A') CALL CNT_CTO_DEBIL(CNT(cntB),Eb,PRB.ELTP,ELT,NOD,cinc,'B') CASE(21) C CONTORNO DE CONTACTO C Pasa las tensiones correspondientes a incognitas y C anhade dn y dt como variables CALL CNT_CTO_DEBIL(CNT(cntA),Ea,PRB.ELTP,ELT,NOD,cinc,'A') CALL CNT_CTO_DEBIL(CNT(cntB),Eb,PRB.ELTP,ELT,NOD,cinc,'B') CASE DEFAULT WRITE(F_W,05003) i,ZCTO(i).TIP WRITE( *,05003) i,ZCTO(i).TIP STOP END SELECT C C Fin bucle que recorre las zonas de contacto C END DO C IF((cinc-1).LE.N_MAX_INC) THEN PRB.NINC=cinc-1 ELSE WRITE(F_W,05002) WRITE (*,05002) STOP END IF C C FIN DE LA RUTINA C RETURN C C FORMATOS DE ESCRITURA C 05000 FORMAT(/,2x,'ERROR 05000 - CONTACTO_CDC - Error Programa (#', @ i1,'#)') 05001 FORMAT(/,2x,'ERROR 05001 - CONTACTO_CDC - Contorno: ',i4, @ '. Tipo de contorno (',i2,') no implementado.') 05002 FORMAT(/,2x,'ERROR 05002 - CONTACTO_CDC - Numero de incognitas ', @ 'fuera del rango permitido.') 05003 FORMAT(/,2x,'ERROR 05003 - CONTACTO_CDC - Zona de contacto: ',i4, @ /,'. Tipo de zona (',i2,') no implementada.') C END C