SUBROUTINE ECUACIONESMINDLINEMPOTRADOTODO(PPY,PPX,TOTAL,W,X,GIROX,GIROY,POISSON,D,PASO,Kb,E,h,Q)
IMPLICIT NONE
!Subrutina comenzada el 7 de abril
!Definición de variables
INTEGER,PARAMETER :: DOBLE=8
INTEGER :: N,M,I,J,EQ,T,CASO,IND,NVALUES,NN,KK
INTEGER,INTENT(IN) :: PPX,PPY,TOTAL
REAL (KIND=DOBLE),DIMENSION(PPY,PPX),INTENT(INOUT) :: GIROX,GIROY,Q
REAL(KIND=DOBLE),DIMENSION(PPY,PPX),INTENT(INOUT) :: W
REAL(KIND=DOBLE),DIMENSION(TOTAL),INTENT(INOUT) :: X
REAL(KIND=DOBLE),DIMENSION(TOTAL) :: P
REAL(KIND=DOBLE),DIMENSION(TOTAL) :: LD
REAL(KIND=DOBLE),INTENT(IN) :: POISSON,D,PASO,Kb,E,h !KB=BALASTO
REAL (KIND=DOBLE):: B1,B2,C1,C2,K,EMPOTR
REAL(KIND=DOBLE),DIMENSION (11*TOTAL) :: VALORES
INTEGER, DIMENSION (11*TOTAL) :: COLUMNAS
REAL(KIND=DOBLE), ALLOCATABLE, DIMENSION (:) :: VAL
INTEGER, ALLOCATABLE, DIMENSION (:) :: COL
INTEGER,DIMENSION (TOTAL+1) :: ROWINDEX
INTEGER,DIMENSION (TOTAL) ::PERM
!VARIABLES QUE DEBEN ENTRAR DESDE EL GENERAL: PPX,PPY, POISSON, SOLUCIONES, CARGAS, GIROS(SALEN)
!PPX=4
!PPY=4
!POISSON=0.18
!D=12500
!PASO=0.25
!E=2.1E6
!h=0.5
!Kb=50000
!K=6./(5.-POISSON)!FACTOR DE CORTADURA
K=5./6.
WRITE(*,*)'PPX,PPY,POISSON,PASO,E,h,kb,K,D,total',PPX,PPY,POISSON,PASO,E,h,Kb,K,D,TOTAL
!ALLOCATE(GIROX(PPY,PPX))
!ALLOCATE(GIROY(PPY,PPX))
!ALLOCATE(LD1(TOTAL))
!ALLOCATE(P(TOTAL))
!ALLOCATE(W(PPY,PPX))
!ALLOCATE(X(TOTAL))
!ALLOCATE(VALORES(6*TOTAL))
!ALLOCATE(COLUMNAS(6*TOTAL))
!ALLOCATE(ROWINDEX(TOTAL+1))
!ALLOCATE(PERM(TOTAL))
!Se definen parámetros que simplifican la expresión general
 EMPOTR=20E30
 B1=-D*(1-POISSON)/2
 B2=-D*(1+POISSON)/2
 C1=K*E*h/(2*(1+POISSON))
 C2=4+(Kb/C1)*(PASO**2)
 WRITE(*,*)'B1,B2,C1,C2',B1,B2,C1,C2
Q=Q*D/(PASO**4) !viene reducida de kirchhoff
!Comienzan a plantearse los esquemas
OPEN(1,FILE='/home/Placas/EsquemasDiferenciasMindlin.dat')
OPEN(21,FILE='/home/Placas/P-DiferenciasMindlin.dat')
OPEN(20,FILE='/home/Placas/Evolucion-RowIndex.dat')
IND=0
NN=2
KK=1
ROWINDEX=5000
ROWINDEX(1)=1
LD=0.0
WRITE(*,*)'ESTOY EN MINDLIN1, EL NUMERO TOTAL DE PUNTOS ES',TOTAL
DO M=1,PPY
  DO N=1,PPX
     		GIROX=0.0
   		GIROY=0.0
   		W=0.0
   		P=0.0
!PUNTOS INTERIORES
   IF(((M>1).AND.(M<(PPY))).AND.((N>1).AND.(N<(PPX)))) THEN
	DO EQ=1,3
		IF (EQ==1) THEN !Ecuación en desplazamientos. Correspondiente a la primera ecuación de Mindlin
		!WRITE(1,*)'M=',M,'N=',N
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 W(M,N+1)=-1
		 W(M,N)=C2
		 W(M,N-1)=-1
		 W(M+1,N)=-1
		 W(M-1,N)=-1
		 GIROX(M,N+1)=-0.5
		 GIROY(M+1,N)=-0.5
		 GIROX(M,N-1)=0.5
		 GIROY(M-1,N)=0.5
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
		 WRITE(*,*)'ESTOY DENTRO DE LOS PUNTOS CENTRALES DE MINDLIN1'
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,101)(P(T),T=1,3*PPX*PPY)
			 101 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
   		END IF
		IF (EQ==2) THEN !Ecuación de Giros en X
		!WRITE(1,*)'M=',M,'N=',N
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROX(M+1,N)=B1
		 GIROX(M-1,N)=B1
		 GIROX(M,N+1)=B1+B2
		 GIROX(M,N-1)=B1+B2
		 GIROX(M,N)=-(4*B1+2*B2-C1*(PASO**2))
		 GIROY(M+1,N+1)=-0.25*B2
		 GIROY(M+1,N-1)=0.25*B2
		 GIROY(M-1,N+1)=0.25*B2
		 GIROY(M-1,N-1)=-0.25*B2
		 W(M,N+1)=-0.5*C1*PASO
		 W(M,N-1)=0.5*C1*PASO
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,102)(P(T),T=1,3*PPX*PPY)
			 102 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !If que cierra la ecuación dos de Mindlin
		IF(EQ==3) THEN !Ecuación de Giros en Y
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROY(M,N+1)=B1
		 GIROY(M,N-1)=B1
		 GIROY(M+1,N)=B1+B2
		 GIROY(M-1,N)=B1+B2
		 GIROY(M,N)=-(4*B1+2*B2-C1*(PASO**2))
		 GIROX(M+1,N+1)=B2*0.25
		 GIROX(M-1,N+1)=-B2*0.25
		 GIROX(M+1,N-1)=-B2*0.25
		 GIROX(M-1,N-1)=B2*0.25
		 W(M+1,N)=0.5*C1*PASO
		 W(M-1,N)=-0.5*C1*PASO
		 LD(IND)=0.0
		  T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,122)(P(T),T=1,3*PPX*PPY)
			 122 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !If que cierra la ecuación tres de Mindlin
	END DO!CIERRA EL DO DE LAS ECUACIONES 
   END IF !Cierre if puntos centrales
   
   
   
   !Lado izquierdo
   IF(((M>1).AND.(M<PPY)).AND.(N==1)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1)THEN !Ecuación en Desplazamientos. Primera ecuación de Mindlin
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,103)(P(T),T=1,3*PPX*PPY)
			 103 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
   		END IF !Cierra el if de la primera ecuación
   		
		IF(EQ==2) THEN !Ecuación de Giros en X
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,104)(P(T),T=1,3*PPX*PPY)
			 104 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierra el if correspondiente a la segunda ecuación de Mindlin
		
		IF(EQ==3) THEN !Ecuación correspondiente a los giros en Y. Tercera ecuación de Midlin
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,124)(P(T),T=1,3*PPX*PPY)
			 124 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierra la tercera ecuación
	END DO
   END IF !FIN LADO IZQUIERDO
   
   !LADO DERECHO
   IF (((M>1).AND.(M<PPY)).AND.(N==PPX)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Ecuación en Giros de X
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
					P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,105)(P(T),T=1,3*PPX*PPY)
			 105 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre ecuación 1 de Mindlin
		
		IF(EQ==2) THEN
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
					P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,106)(P(T),T=1,3*PPX*PPY)
			 106 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre segunda ecuación de Mindlin
		IF(EQ==3) THEN
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
					P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,126)(P(T),T=1,3*PPX*PPY)
			 126 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre tercera ecuación de Mindlin
	END DO
   END IF !Cierre IF LADO DERECHO

!Lado Superior
   IF (((N>1).AND.(N<PPX)).AND.(M==1)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Primera ecuación de Mindlin
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,107)(P(T),T=1,3*PPX*PPY)
			 107 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre de la Primera ecuación
		IF(EQ==2) THEN !Segunda ecuación de Mindlin
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,108)(P(T),T=1,3*PPX*PPY)
			 108 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre de la segunda ecuación
		IF(EQ==3)THEN ! Tercera ecuación de Mindlin
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,128)(P(T),T=1,3*PPX*PPY)
			 128 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierre de la Tercera ecuación
	END DO
   END IF !Cierre IF LADO SUPERIOR
   !LADO INFERIOR
   IF (((N>1).AND.(N<PPX)).AND.(M==PPY)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Primera Ecuación de Mindlin
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,109)(P(T),T=1,3*PPX*PPY)
			 109 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
   			WRITE(*,*)'HOLA,EQ1,TENEMOS UN VALOR DE KK=',KK,'ROWINDEX=',ROWINDEX(NN),'NN=',NN-1
		END IF !Cierre de la primera ecuación de Mindlin
		IF(EQ==2) THEN
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,110)(P(T),T=1,3*PPX*PPY)
			 110 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
   			WRITE(*,*)'HOLA,EQ2,TENEMOS UN VALOR DE KK=',KK,'ROWINDEX=',ROWINDEX(NN),'NN=',NN-1
		END IF !Cierre de la segunda ecuación de Mindlin
		IF(EQ==3) THEN
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,130)(P(T),T=1,3*PPX*PPY)
			 130 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
   			WRITE(*,*)'HOLA,EQ3,TENEMOS UN VALOR DE KK=',KK,'ROWINDEX=',ROWINDEX(NN-1),'NN=',NN-1
		END IF!Cierre de la tercera ecuación de Mindlin
	END DO
   END IF !Cierre IF LADO INFERIOR
!PUNTOS ESQUINA
!ESQUINA IZQUIERDA SUPERIOR
   IF ((N==1).AND.(M==1)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Ecuación en Giros de X
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,111)(P(T),T=1,3*PPX*PPY)
			 111 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre de la primera ecuación
		IF(EQ==2) THEN !Segunda ecuación
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,112)(P(T),T=1,3*PPX*PPY)
			 112 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierre de la segunda ecuación
		IF(EQ==3)THEN !Tercera ecuación 
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,132)(P(T),T=1,3*PPX*PPY)
			 132 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierre de la tercera ecuación
	END DO
   END IF !ESQUINA IZQUIERDA SUPERIOR
!ESQUINA DERECHA SUPERIOR !AQUI
   IF ((N==PPX).AND.(M==1)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Ecuación en Giros de X
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,113)(P(T),T=1,3*PPX*PPY)
			 113 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre de la primera ecuación
		IF(EQ==2) THEN !Ecuación 2
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROX(M,N)=EMPOTR
 		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,114)(P(T),T=1,3*PPX*PPY)
			 114 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre ecuación 2
		IF(EQ==3) THEN !Ecuación 2
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,134)(P(T),T=1,3*PPX*PPY)
			 134 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierre ecuación tres
	END DO
   END IF !ESQUINA DERECHA SUPERIOR
   
   !ESQUINA IZQUIERDA INFERIOR
   IF ((N==1).AND.(M==PPY)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Ecuación en Giros de X
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 WRITE(1,115)(P(T),T=1,3*PPX*PPY)
			 115 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre ecuación 1
		IF (EQ==2) THEN
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,116)(P(T),T=1,3*PPX*PPY)
			 116 FORMAT(1000000F30.6)
			!Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF
		IF(EQ==3) THEN !Ecuación 3
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,136)(P(T),T=1,3*PPX*PPY)
			 136 FORMAT(1000000F30.6)
			!Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF
	END DO
   END IF !ESQUINA IZQUIERDA INFERIOR
      !ESQUINA DERECHA INFERIOR
   IF ((N==PPX).AND.(M==PPY)) THEN 
   	!ESTABLECEMOS AHORA LAS ECUACIONES TENIENDO EN CUENTA LAS CONDICIONES DE CONTORNO
	DO EQ=1,3
		IF (EQ==1) THEN !Ecuación primera
		 IND=IND+1
		 GIROX=0.0
		 GIROY=0.0
		 W=0.0
		 W(M,N)=EMPOTR
		 LD(IND)=(Q(M,N))*(PASO**2/C1)
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,117)(P(T),T=1,3*PPX*PPY)
			 117 FORMAT(1000000F30.6)
			 !Almacenamos solo lo que nos interesa
			 DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierre de la primera ecuación
		IF(EQ==2) THEN  !Ecuación segunda
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROX(M,N)=EMPOTR
		 LD(IND)=0.0
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,118)(P(T),T=1,3*PPX*PPY)
			 118 FORMAT(1000000F30.6)
			DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF !Cierre de la segunda ecuación
		
		IF(EQ==3)THEN!Tercera ecuación
		 IND=IND+1
		 W=0.0
		 GIROX=0.0
		 GIROY=0.0
		 GIROY(M,N)=EMPOTR
		 LD(IND)=0.0
			 !ESCRIBO LA ECUACIÓN EN EL FICHERO
			 T=1
			 DO I=1,PPY
			 	DO J=1,PPX
			 		P(T)=W(I,J)
			 		P(T+1)=GIROX(I,J)
			 		P(T+2)=GIROY(I,J)
			 		T=T+3
			 	END DO
			 END DO
			 WRITE(1,138)(P(T),T=1,3*PPX*PPY)
			 138 FORMAT(1000000F30.6)
			DO T=1,TOTAL
   				WRITE(21,*) 'P(T)=',P(T),'T=',T,'KK=',KK
   				IF(P(T).NE.(0.0)) THEN !Sólo guardamos el valor no nulo
   					VALORES(KK)=P(T)
   					COLUMNAS(KK)=T
   					KK=KK+1
   				END IF
   			END DO
   			WRITE(21,*)'----------------------------------------------'
   			ROWINDEX(NN)=KK
   			NN=NN+1
		END IF!Cierre de la tercera ecuación
	END DO
   END IF !ESQUINA DERECHA INFERIOR
   		!Cuando llegamos aquí ya hemos estudiado el punto correspondiente.
   		!Escribimos en el fichero para ver la evolución del RowIndex
   		DO I=1,TOTAL+1
   			WRITE(20,*)'ROWINDEX(NN)=',ROWINDEX(I),'NN=',I
   		END DO
   		WRITE(20,*)'----------------------------------'
  END DO!Final columnas
END DO !Final filas
!Escribo los vectores de valores y columnas para ver si lo hace bien...

NVALUES=kk-1
WRITE(*,*)'NVALUES=',NVALUES
OPEN(5,FILE='/home/Placas/ROWINDEX-Mindlin.dat')
DO I=1,TOTAL+1
	WRITE(5,*)(ROWINDEX(I))
END DO
CLOSE(5)
ALLOCATE(VAL(NVALUES))
ALLOCATE(COL(NVALUES))
VAL=0.0
COL=0.0
DO I=1,NVALUES
	VAL(I)=VALORES(I)
	COL(I)=COLUMNAS(I)
END DO
OPEN(5,FILE='/home/Placas/Vectores-Mindlin.dat')
DO i=1,TOTAL
	WRITE(5,*)(VAL(I),COL(I))
END DO
CLOSE(5)
!DEALLOCATE(VALORES)
!DEALLOCATE(COLUMNAS)
X=0.0 !Vector soluciones, ha de entrar en la subrutina de SPARSE. 
!El formato es GIROX1,GIROY1,GIROX2,GIROY2.....
OPEN(41,FILE='/home/Placas/LDMindlin.dat')
DO I=1,TOTAL
WRITE(41,*)LD(I)
END DO
CLOSE(41)
CALL SPARSE(VAL,COL,ROWINDEX,PERM,LD,X,TOTAL,NVALUES)
OPEN(51,FILE='/home/Placas/ResultadosMindlin.dat')
WRITE(51,*)'DESPLAZAMIENTOS Y GIROS EN X E Y'
WRITE(51,*)X
CLOSE(51)
CALL REORDENACIONGIROSDESPLAZAMIENTOS(X,PPX,PPY,TOTAL,GIROX,GIROY,W)
OPEN(5,FILE='/home/Placas/GIROX-Mindlin.dat')
OPEN(6,FILE='/home/Placas/GIROY-Mindlin.dat')
OPEN(7,FILE='/home/Placas/W-Mindlin.dat')
DO I=1,PPY
	WRITE(5,505)(GIROX(I,J),J=1,PPX)
	505 FORMAT(1000000F20.15)
	WRITE(6,506)(GIROY(I,J),J=1,PPX)
	506 FORMAT(1000000F20.15)
	WRITE(7,507)(W(I,J),J=1,PPX)
	507 FORMAT(1000000F20.15)
END DO


CLOSE(5)
CLOSE(6)
!Una vez salimos de REORDENACIONGIROS tenemos los giros en x e y de cada punto.
CLOSE(1)
CLOSE(21)
END SUBROUTINE ECUACIONESMINDLINEMPOTRADOTODO
