Cálculos de la Tesis


Índice

Datos de Entrada.

Datos de entrada con als propiedades de los amteriales para calcular las constantes ingenieriles.

Propiedad mecánica de elasticidad Símbolo Valor Unidad
Modulo de Young longitudinal FC EfA GPa
Modulo de Young transversal FC EfT GPa
Relación de Poisson longitudinal FC νfA ---
Relación de Poisson transversal FC νfT ---
Modulo de Corte longitudinal FC GfA GPa
Modulo de Corte transversal FC GfT GPa
Modulo de Young de la Matriz Em GPa
Relación de Poisson de la Matriz νm ---

Porcentaje de Fibra y de resina del compuesto


Cálculo de las constantes ingenieriles mediante la Regla de las mezclas



Modelo de la Microestructura Periódica

Este es un modelo desarrollado por los investigadores Barbero y Luciano. A diferencia de los anteriores modelos, predice por si solo todos los módulos correspondientes a todos los coeficientes de la matriz de rigidez Cij. Para obtener los módulos E1, E2, ν12, G12, G23 y ν23 en necesario invertir la matriz de rigidez Cij, para así obtener los coeficientes de la matriz de flexibilidad Sij. Finalmente, haciendo unas operaciones sencillas, se obtienen las constantes ingenieriles mecánicas. Los fundamentos y suposiciones hechas en el modelo se pueden encontrar en el trabajo de Barbero y Luciano (Barbero, E. J. y Luciano, 1995). Las fórmulas involucradas en los cálculos son considerablemente más complicadas que en los anteriores modelos, y se presentan a continuación.

En primer lugar, se calculan las constantes de Lamé de la matriz. La definición formal de las constantes de Lamé μ y λ (Mu y Lambda). Las definiciones de las mismas se pueden ver en las referencias de Lurie y Ana María Monti (A. I. Lurie, 2005; Ana María Monti, 1997):


Luego el parámetro Δ(delta):

Seguidamente un conjunto de contantes C’ relacionados con los coeficientes de la matriz rigidez:






Hasta ahora, ninguno de los valores calculados, estaba relacionado con el volumen de fibra del compuesto. Los coeficientes s3, s6 y s7 son los que varían según la fracción del volumen de fibra:



Para la siguiente parte del calculo, se trabaja con los valores obtenidos de las Ecuaciones A.2.17 a A.2.25. Los coeficientes a1, a2, a3 y a4 se calculan como:




Acto seguido, se llega a unos coeficientes C*:






Y finalmente, relaciona los coeficientes C* con las constantes de la matriz rigidez Cij:






Invirtiendo la matriz rigidez Cij se obtiene la matriz flexibilidad Sij y finalmente se obtienen las constantes ingenieriles:








Resumen de las constantes ingenieriles calculadas según la Regla de las Mezclas y el Modelo de la Microestructura Periódica

Propiedad Valor RM Valor MMP Unidades
Módulo Longitudinal RM: E1 MPa
Módulo Transversal RM: E2 = E3 MPa
Módulo de corte en el Plano RM: G12 = G13 MPa
Módulo de corte fuera del plano RM: G23 MPa
Relación de Poisson en el plano RM: ν12 = ν13 ---
Relación de Poisson fuera del plano RM: ν23 ---

Codigos de la RM en Javascript

      
      
    
    

Codigos del MMP en Javascript

      
      
    
    

Codigos de la RM y del MMP en Python

      
        """
Micromecanica para fibras Transversalmente Isotropicas

Constantes ingenieriles de la fibra y de la matriz:
Es conveniente definir las contantes ingenieriles tanto de la fibra como de la matriz:
"""

import numpy as np #Importamos el módulo NumPy, necesario para realizar algunas operaciones con matrices

#Modulo elástico de la fibra en direccion axial
E_f_A=239.4

#Modulo elástico de la fibra en direccion transversal
E_f_T=13

#Modulo elástico de la matriz
E_m=3.4

#Fracción en Volumen de la fibra
V_f=0.6

#Fracción en Volumen de la matriz
V_m=0.4

#Módulo de Poisson de la fibra en direccion axial
NU_f_A=0.47

#Módulo de Poisson de la fibra en direccion trasnversal
NU_f_T=0.17

#Módulo de Poisson de la matriz
NU_m=0.31

#Modulo de corte de la fibra en direccion axial
#G_f_A=E_f_A/(2*(1+NU_f_A))
G_f_A=45.4

#Modulo de corte de la fibra en direccion transversal
G_f_T=E_f_T/(2*(1+NU_f_T))
print(f'G_f_T: {G_f_T}') # G_f_T: 5.555555555555556

#Modulo de corte de la matriz
G_m=E_m/(2*(1+NU_m))
print(f'G_m: {G_m}') # G_m: 1.297709923664122 

"""
Regla de las mezclas:
Los módulos se calculan de la siguiente manera:
"""
# Módulo Longitudinal:
E1_RM=E_m*V_m+V_f*E_f_A
print(f'E1_RM: {E1_RM}') # E1_RM: 145.0

# Módulo Transversal:
E2_RM=1/(V_m/E_m+V_f/E_f_A)
print(f'E2_RM: {E2_RM}') # E2_RM: 8.322699386503066 

# Relacion de Poisson en el plano:
NU12_RM=NU_f_A*V_f+NU_m*V_m
print(f'NU12_RM: {NU12_RM}') # NU12_RM: 0.40599999999999997

# Módulo de corte en el Plano:
G12_RM=1/(V_m/G_m+V_f/G_f_A)
print(f'G12_RM: {G12_RM}') # G12_RM: 3.110892557719592

# Módulo de corte interlaminar:
G13_RM=G12_RM
print(f'G13_RM: {G13_RM}') # G13_RM: 3.110892557719592  

# Módulo de corte interlaminar:
# Esta propiedad del material no se puede calcular con los supuestos iniciales de la regla de las mezclas. Para eso utilizamos otra teoría denominada técnica de parámetro semiempirico de partición de tensiones:
NU_4=(3-4*NU_m+G_m/G_f_A)/(4*(1-NU_m))
G23_RM=G_m*((V_f+NU_4*(1-V_f))/(NU_4*(1-V_f)+V_f*G_m/G_f_A))
print(f'G23_RM: {G23_RM}') # G23_RM: 4.034556648120423 

# Relación de Poisson en el plano:
NU13_RM=NU12_RM
print(f'NU13_RM: {NU13_RM}') # NU13_RM: 0.40599999999999997

# Relación de Poisson fuera del plano:
NU23_RM=E2_RM/(2*G23_RM)-1
print(f'NU23_RM: {NU23_RM}') # NU23_RM: 0.03142676040753534 

"""
Modelo de microestructura periodica
La micromecánica periódica de la microestructura (PMM: periodic microstructure micromechanics) produce predicciones precisas para todos los módulos (en plural) de un compuesto reforzado por fibras largas. Este modelo fue desarrollado por Barbero y Luciano (Luciano, R. and Barbero, E. J., ASME J. Appl. Mech. 62 (1995) 786 y Luciano, R. and Barbero, E. J., Int. J. Solids Struct. 31 (1994) 2933). A diferencia de la regla de las mezclas, el modelo por si solo predice propiedades Modulos de corte fuera del plano y las Relaciones de Poisson fuera del plano.
En general, las formulas son un tanto más complicadas, basandose en muchos casos en las constantes de Lamé.
"""

# Cálculo de constantes de Lamé:
LAMDA_m=(E_m*NU_m)/((1+NU_m)*(1-2*NU_m))
print(f'LAMDA_m: {LAMDA_m}') # LAMDA_m: 2.1173161912414624  

MU_m=G_m
print(f'MU_m: {MU_m}') # MU_m: 1.297709923664122  

# Constante delta:
DELTA=(1-2*NU_f_A**2*E_f_T/E_f_A-NU_f_T**2-2*NU_f_A**2*NU_f_T*E_f_T/E_f_A)/(E_f_A*E_f_T**2)
print(f'DELTA: {DELTA}') # DELTA: 2.3308536426858548e-05

# Constantes "C' (C prima)":
C1_11=(1-NU_f_T**2)/(E_f_T**2*DELTA)
print(f'C1_11: {C1_11}') # C1_11: 246.52572520737607 

C1_22=(1-NU_f_A**2*E_f_T/E_f_A)/(E_f_A*E_f_T*DELTA)
print(f'C1_22: {C1_22}') # C1_22: 13.619979737737639 

C1_33=C1_22
print(f'C1_33: {C1_33}') # C1_33: 13.619979737737639

C1_12=(NU_f_A*E_f_T/E_f_A+NU_f_A*NU_f_T*E_f_T/E_f_A)/(E_f_T**2*DELTA)
print(f'C1_12: {C1_12}') # C1_12: 7.580558731251158

C1_13=C1_12
print(f'C1_13: {C1_13}') # C1_13: 7.580558731251158

C1_23=(NU_f_T+NU_f_A**2*E_f_T/E_f_A)/(E_f_A*E_f_T*DELTA)
print(f'C1_23: {C1_23}') # C1_23: 2.508868626626529 

C1_44=(C1_22-C1_23)/2
print(f'C1_44: {C1_44}') # C1_44: 5.555555555555555 

C1_55=G_f_A
print(f'C1_55: {C1_55}') # C1_55: 45.4

C1_66=G_f_A
print(f'C1_66: {C1_66}') # C1_66: 45.4 

# Coeficientes "S" que dependen del volumen de fibra:
s3=0.49247-0.47603*V_f-0.02748*V_f**2
print(f's3: {s3}') # s3: 0.19695920000000003

s6=0.36844-0.14944*V_f-0.27152*V_f**2
print(f's6: {s6}') # s6: 0.18102880000000005 

s7=0.12346-0.32035*V_f+0.23517*V_f**2
print(f's7: {s7}') # s7: 0.015911199999999973 

# Coeficientes "a":
a_1=4*MU_m**2-2*MU_m*C1_33+6*LAMDA_m*MU_m-2*C1_11*MU_m-2*MU_m*C1_23+C1_23*C1_11+4*LAMDA_m*C1_12-2*C1_12**2-LAMDA_m*C1_33-2*C1_11*LAMDA_m+C1_11*C1_33-LAMDA_m*C1_23
print(f'a_1: {a_1}') # a_1: 2188.875650865659  

a_2=8*MU_m**3-8*MU_m**2*C1_33+12*MU_m**2*LAMDA_m-4*MU_m**2*C1_11-2*MU_m*C1_23**2+4*MU_m*LAMDA_m*C1_23+4*MU_m*C1_11*C1_33-8*MU_m*LAMDA_m*C1_33-4*MU_m*C1_12**2+2*MU_m*C1_33**2-4*MU_m*LAMDA_m*C1_11+8*MU_m*LAMDA_m*C1_12+2*LAMDA_m*C1_11*C1_33+4*LAMDA_m*C1_12*C1_23-4*LAMDA_m*C1_12*C1_33-2*LAMDA_m*C1_11*C1_23-2*C1_23*C1_12**2+C1_23**2*C1_11+2*C1_33*C1_12**2-C1_11*C1_33**2+LAMDA_m*C1_33**2-LAMDA_m*C1_23**2
print(f'a_2: {a_2}') # a_2: -18639.789257583736 

a_3=(4*MU_m**2+4*LAMDA_m*MU_m-2*C1_11*MU_m-2*C1_33*MU_m-C1_11*LAMDA_m-C1_33*LAMDA_m-C1_12**2)/a_2+(C1_11*C1_33+2*LAMDA_m*C1_12)/a_2-(s3-s6/(2-2*NU_m))/MU_m
print(f'a_3: {a_3}') # a_3: -0.16464039740014957 

a_4=(-2*MU_m*C1_23+2*LAMDA_m*MU_m-LAMDA_m*C1_23-C1_11*LAMDA_m-C1_12**2+2*LAMDA_m*C1_12+C1_11*C1_23)/a_2+s7/(MU_m*(2-2*NU_m))
print(f'a_4: {a_4}') # a_4: 0.005406434901024193

# Coeficientes "C*" (C asterisco):
C2_11=LAMDA_m+2*MU_m-V_f*(-a_4**2+a_3**2)*(1/((-(2*MU_m+2*LAMDA_m-C1_33-C1_23)*(a_4**2-a_3**2)/a_1)+(2*(a_4-a_3)*((LAMDA_m-C1_12)**2))/(a_1**2)))
print(f'C2_11: {C2_11}') # C2_11: 148.59892890919969

C2_12=LAMDA_m+V_f*((LAMDA_m-C1_12)*(a_4-a_3)/a_1)*(1/(((2*MU_m+2*LAMDA_m-C1_33-C1_23)*(a_3**2+a_4**2)/a_1)+(2*(a_4-a_3)*((LAMDA_m-C1_12)**2)/a_1**2)))
print(f'C2_12: {C2_12}') # C2_12: 4.367710571297936  

C2_22=LAMDA_m+2*MU_m-V_f*((2*MU_m+2*LAMDA_m-C1_33-C1_23)*a_3/a_1-((LAMDA_m-C1_12)**2)/a_1**2)*(1/((2*MU_m+2*LAMDA_m-C1_33-C1_23)*(a_3**2-a_4**2)/a_1+2*(a_4-a_3)*((LAMDA_m-C1_12)**2)/a_1**2))
print(f'C2_22: {C2_22}') # C2_22: 8.39632748492895 

C2_23=LAMDA_m+V_f*((2*MU_m+2*LAMDA_m-C1_33-C1_23)*a_4/a_1-((LAMDA_m-C1_12)**2)/a_1**2)*(1/((2*MU_m+2*LAMDA_m-C1_33-C1_23)*(a_3**2-a_4**2)/a_1+2*(a_4-a_3)*((LAMDA_m-C1_12)**2)/a_1**2))
print(f'C2_23: {C2_23}') # C2_23: 2.272467902026411

C2_44=MU_m-V_f/((2/(2*MU_m-C1_22+C1_23))-(2*s3-4*s7/(2-2*NU_m))/MU_m)
print(f'C2_44: {C2_44}') # C2_44: 2.490860381490802

C2_66=MU_m-V_f/(1/(MU_m-C1_66)-s3/MU_m)
print(f'C2_66: {C2_66}') # C2_66: 4.737110514438011  

# Constantes de la matriz rigidez:
# # Finalmente, relaciona los coeficientes C* con las constantes de la matriz rigidez Cij:
C_11=C2_11
print(f'C_11: {C_11}') # C_11: 148.59892890919969   

C_12=C2_12
print(f'C_12: {C_12}') # C_12: 4.367710571297936  

C_13=C2_12
print(f'C_13: {C_13}') # C_13: 4.367710571297936

C_22=3*C2_22/4+C2_23/4+C2_44/4
print(f'C_22: {C_22}') # C_22: 7.488077684576015

C_33=C_22
print(f'C_33: {C_33}') # C_33: 7.488077684576015

C_23=C2_22/4+3*C2_23/4-C2_44/4
print(f'C_23: {C_23}') # C_23: 3.1807177023793454

C_44=C2_44
print(f'C_44: {C_44}') # C_44: 2.490860381490802

C_55=C2_66
print(f'C_55: {C_55}') # C_55: 4.737110514438011

C_66=C_55
print(f'C_66: {C_66}') # C_66: 4.737110514438011

"""
Constantes ingenieriles:
Inviertiendo la matriz rigidez Cij se obtiene la matriz flexibilidad Sij y finalmente se obtienen las constantes ingenieriles. Acordarse que una lámina sola es un material "trasnversalmente isotrópico", cuya matriz se muestra a continuación:
"""

# Los pasos para calcular las contantes ingenieriles se muestran a continuacion:
# Se crea una matriz de ceros correspondiente a la matriz rigidez.
import numpy as np
Cij = np.zeros((6, 6)) 
print(f'Cij={Cij}')
# Cij=[[0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0. 0.]]

# Dado que la mayoria de los componentes de la matriz son ceros, conviene arrancar deficiendo la matriz de este modo para luego reasignar convenientemente el valor de algunos elementos de la matriz, de acurdo a la definicion vista en la figura.

Cij[0,0]=C_11
Cij[0,1]=C_12
Cij[0,2]=C_13
Cij[1,0]=C_12
Cij[1,1]=C_22
Cij[1,2]=C_23
Cij[2,0]=C_13
Cij[2,1]=C_23
Cij[2,2]=C_33
Cij[3,3]=C_44
Cij[4,4]=C_55
Cij[5,5]=C_66
print(f'Cij={Cij}')
# Cij=[ [148.59892891   4.36771057    4.36771057    0.           0.           0.        ]
#     [  4.36771057     7.48807768    3.1807177     0.           0.           0.        ]
#     [  4.36771057     3.1807177     7.48807768    0.           0.           0.        ]
#     [  0.             0.            0.            2.49086038   0.           0.        ]
#     [  0.             0.            0.            0.           4.73711051   0.        ]
#     [  0.             0.            0.            0.           0.           4.73711051]]

#Cálculamos la matriz inversa de la matriz rigidez Cij que es la matriz flexibilidad Sij:

Sij=np.linalg.inv(Cij)
print(f'Sij={Sij}')
# Sij=[[ 0.00689547 -0.00282294 -0.00282294  0.          0.          0.        ]
#      [-0.00282294  0.16410172 -0.06805905  0.          0.          0.        ]
#      [-0.00282294 -0.06805905  0.16410172  0.          0.          0.        ]
#      [ 0.          0.          0.          0.4014677   0.          0.        ]
#      [ 0.          0.          0.          0.          0.21109915  0.        ]
#      [ 0.          0.          0.          0.          0.          0.21109915]]

#Extraemos las contantes ingenieriles a partir de la matriz flexibilidad:

E1_PMM=1/Sij[0,0]
print(f'E1_PMM={E1_PMM}') # E1_PMM=145.02272467194285

E2_PMM=1/Sij[1,1]
print(f'E2_PMM={E2_PMM}') # E2_PMM=6.093781356982806

NU12_PMM=-Sij[1,0]/Sij[0,0]
print(f'NU12_PMM={NU12_PMM}') # NU12_PMM=0.40939116487680455

NU13_PMM=NU12_PMM
print(f'NU13_PMM={NU13_PMM}') # NU13_PMM=0.40939116487680455

NU23_PMM=-Sij[2,1]/Sij[1,1]
print(f'NU23_PMM={NU23_PMM}') # NU23_PMM=0.41473695771187835

G12_PMM=1/Sij[4,4]
print(f'G12_PMM={G12_PMM}') # G12_PMM=4.737110514438011

G13_PMM=G12_PMM
print(f'G13_PMM={G13_PMM}') # G13_PMM=4.737110514438011

G23_PMM=1/Sij[3,3]
print(f'G23_PMM={G23_PMM}') # G23_PMM=2.490860381490802
      
    

Codigos de la RM y del MMP en Visual Basic utilizados en Word

      
    '##################################################################
    'Regla de las mezclas:
    '##################################################################


    Private Sub calcular_RM_Click()
    
    '##################################################################
    'Declaracion de variables: Propiedades de tablas, bibliografía, etc. que definen al resto:
    
    'Dim var_E_f_A As Range
    'Dim var_E_m As Range
    'Dim var_V_f As Range
    'Dim var_V_m As Range
    'Dim var_NU_f_A As Range
    'Dim var_NU_m As Range
    'Dim var_G_f_A As Range

    '##################################################################
    'Declaracion de variables: Módulos pertenecientes a la Regla de las mezclas (RM:
    Dim var_E1_RM As Range
    Dim var_E2_RM As Range
    Dim var_NU12_RM As Range
    Dim var_G12_RM As Range
    Dim var_G13_RM As Range
    Dim var_G23_RM As Range
    Dim var_NU13_RM As Range
    Dim var_NU23_RM As Range
    
    '##################################################################
    'Declaracion de variables: Variables de los calculos en las funciones (números de coma flotante dentro de la funcion de calculo de la MACRO):
    Dim E1_RM As Double
    Dim E2_RM As Double
    Dim NU12_RM As Double
    Dim G12_RM As Double
    Dim G13_RM As Double
    Dim G23_RM As Double
    Dim NU13_RM As Double
    Dim NU23_RM As Double
    Dim NU_4 As Double

    '##################################################################
    '##################################################################
    '##################################################################
    
    'Relacionamos las variables con los marcadores de la tabla del documento Word:
    Set var_E1_RM = ActiveDocument.Bookmarks("RM_E_1").Range
    Set var_E2_RM = ActiveDocument.Bookmarks("RM_E_2").Range
    Set var_NU12_RM = ActiveDocument.Bookmarks("RM_NU_12").Range
    Set var_G12_RM = ActiveDocument.Bookmarks("RM_G_12").Range
    Set var_G13_RM = ActiveDocument.Bookmarks("RM_G_13").Range
    Set var_G23_RM = ActiveDocument.Bookmarks("RM_G_23").Range
    Set var_NU13_RM = ActiveDocument.Bookmarks("RM_NU_13").Range
    Set var_NU23_RM = ActiveDocument.Bookmarks("RM_NU_23").Range

    '##################################################################
    '##################################################################
    '##################################################################
    'Cálculo del resto de las variables a partir de las constantes
    
    'Cálculo del Modulo de corte de la matriz
    G_m = (Val(txt_E_m.Value)) / (2 * (1 + (Val(txt_NU_m.Value))))

    'Cálculo del Módulo Longitudinal:
    E1_RM = (Val(txt_E_m.Value)) * (Val(txt_V_m.Value)) + (Val(txt_V_f.Value)) * (Val(txt_E_f_A.Value))
    
    'Cálculo del Módulo Transversal:
    E2_RM = 1 / ((Val(txt_V_m.Value)) / (Val(txt_E_m.Value)) + (Val(txt_V_f.Value)) / (Val(txt_E_f_A.Value)))

    'Cálculo del la Relacion de Poisson en el plano:
    NU12_RM = (Val(txt_NU_f_A.Value)) * (Val(txt_V_f.Value)) + (Val(txt_NU_m.Value)) * (Val(txt_V_m.Value))

    'Cálculo del Módulo de corte en el Plano:
    G12_RM = 1 / ((Val(txt_V_m.Value)) / (G_m) + (Val(txt_V_f.Value)) / (Val(txt_G_f_A.Value)))

    'Cálculo del Módulo de corte interlaminar:
    G13_RM = G12_RM
    
    'Cálculo del Módulo de corte fuera del plano RM:
    NU_4 = (3 - 4 * (Val(txt_NU_m.Value)) + (G_m) / (Val(txt_G_f_A.Value))) / (4 * (1 - (Val(txt_NU_m.Value))))
    G23_RM = (G_m) * (((Val(txt_V_f.Value)) + NU_4 * (1 - (Val(txt_V_f.Value)))) / (NU_4 * (1 - (Val(txt_V_f.Value))) + (Val(txt_V_f.Value)) * (G_m) / (Val(txt_G_f_A.Value))))
    
    'Cálculo de la Relación de Poisson en el plano:
    NU13_RM = NU12_RM
    
    'Cálculo de la Relación de Poisson fuera del plano:
    NU23_RM = E2_RM / (2 * G23_RM) - 1
    
    'Relacionamos las variables calculadas con el respectivo campo del formulario:
    txt_E1_RM.Caption = Format(E1_RM, "0.000000000000000")
    txt_E2_RM.Caption = Format(E2_RM, "0.000000000000000")
    txt_NU12_RM.Caption = Format(NU12_RM, "0.000000000000000")
    txt_G12_RM.Caption = Format(G12_RM, "0.000000000000000")
    txt_G13_RM.Caption = Format(G13_RM, "0.000000000000000")
    txt_G23_RM.Caption = Format(G23_RM, "0.000000000000000")
    txt_NU13_RM.Caption = Format(NU13_RM, "0.000000000000000")
    txt_NU23_RM.Caption = Format(NU23_RM, "0.000000000000000")
    
    'Relacionamos las variables calculadas con las variables de los marcadores del documento Word:
    var_E1_RM = Format(E1_RM, "0.000000000000000")
    var_E2_RM = Format(E2_RM, "0.000000000000000")
    var_NU12_RM = Format(NU12_RM, "0.000000000000000")
    var_G12_RM = Format(G12_RM, "0.000000000000000")
    var_G13_RM = Format(G13_RM, "0.000000000000000")
    var_G23_RM = Format(G23_RM, "0.000000000000000")
    var_NU13_RM = Format(NU13_RM, "0.000000000000000")
    var_NU23_RM = Format(NU23_RM, "0.000000000000000")
    
End Sub


Private Sub limpiar_Click()
    Me.txt_E1_RM = Empty
    Me.txt_E2_RM = Empty
    Me.txt_NU12_RM = Empty
    Me.txt_G12_RM = Empty
    Me.txt_G13_RM = Empty
    Me.txt_G23_RM = Empty
    Me.txt_NU13_RM = Empty
    Me.txt_NU23_RM = Empty
End Sub

    '##################################################################
    'Modelo de la microestructura periódica:
    '##################################################################

    Private Sub calcular_RM_Click()
    '##################################################################

    'Definimos las variables de entrada
    Dim E_f_A_MMP As Double
    Dim E_f_T_MMP As Double
    Dim G_f_A_MMP As Double
    Dim G_f_T_MMP As Double
    Dim NU_f_A_MMP As Double
    Dim NU_f_T_MMP As Double
    Dim E_m_MMP As Double
    Dim NU_m_MMP As Double
    Dim V_f_MMP As Double
    Dim V_m_MMP As Double

    'Las igualamos a los textos de los campos del formulario
    E_f_A_MMP = (Val(txt_E_f_A_MMP.Value))
    E_f_T_MMP = (Val(txt_E_f_T_MMP.Value))
    G_f_A_MMP = (Val(txt_G_f_A_MMP.Value))
    G_f_T_MMP = (Val(txt_G_f_T_MMP.Value))
    NU_f_A_MMP = (Val(txt_NU_f_A_MMP.Value))
    NU_f_T_MMP = (Val(txt_NU_f_T_MMP.Value))
    E_m_MMP = (Val(txt_E_m_MMP.Value))
    NU_m_MMP = (Val(txt_NU_m_MMP.Value))
    V_f_MMP = (Val(txt_V_f_MMP.Value))
    V_m_MMP = (Val(txt_V_m_MMP.Value))

    'Propiedades de materiales calculadas a partir de las variables anteriores
    Dim G_m_MMP  As Double
    Dim LAMDA_m  As Double
    Dim MU_m  As Double
    Dim DELTA  As Double

    '##################################################################
    'Constantes C'
    Dim C1_11  As Double
    Dim C1_22  As Double
    Dim C1_33  As Double
    Dim C1_12  As Double
    Dim C1_13  As Double
    Dim C1_23  As Double
    Dim C1_44  As Double
    Dim C1_55  As Double
    Dim C1_66  As Double

    'Constantes s
    Dim s3  As Double
    Dim s6  As Double
    Dim s7  As Double

    'Constantes a
    Dim a_1  As Double
    Dim a_2  As Double
    Dim a_3  As Double
    Dim a_4  As Double


    'Constantes C*
    Dim C2_11  As Double
    Dim C2_22  As Double
    Dim C2_12  As Double
    Dim C2_23  As Double
    Dim C2_44  As Double
    Dim C2_66  As Double

    '##################################################################
    ' Constantes de la matriz rigidez:

    Dim C_11  As Double
    Dim C_22  As Double
    Dim C_33  As Double
    Dim C_12  As Double
    Dim C_13  As Double
    Dim C_23  As Double
    Dim C_44  As Double
    Dim C_55  As Double
    Dim C_66  As Double

    'Matriz rigidez:
    Dim matriz_rigidez(1 To 6, 1 To 6) As Double
    Dim contenidoMatriz As String

    '##################################################################
    ' Constantes de la matriz flexibilidad:

    Dim S_11  As Double
    Dim S_22  As Double
    Dim S_33  As Double
    Dim S_12  As Double
    Dim S_13  As Double
    Dim S_23  As Double
    Dim S_44  As Double
    Dim S_55  As Double
    Dim S_66  As Double

    '##################################################################
    ' Constantes ingenieriles:
    Dim E1_MMP As Double
    Dim E2_MMP As Double
    Dim NU12_MMP As Double
    Dim G12_MMP As Double
    Dim G13_MMP As Double
    Dim G23_MMP As Double
    Dim NU13_MMP As Double
    Dim NU23_MMP As Double

    Dim var_E1_MMP As Range
    Dim var_E2_MMP As Range
    Dim var_NU12_MMP As Range
    Dim var_G12_MMP As Range
    Dim var_G13_MMP As Range
    Dim var_G23_MMP As Range
    Dim var_NU13_MMP As Range
    Dim var_NU23_MMP As Range

    '##################################################################
    '##################################################################
    '##################################################################

    'Cálculo del Modulo de corte de la matriz
    G_m_MMP = E_m_MMP / (2 * (1 + NU_m_MMP))

    ' Cálculo de constantes de Lamé:
    LAMDA_m = (E_m_MMP * NU_m_MMP) / ((1 + NU_m_MMP) * (1 - 2 * NU_m_MMP))
    txt_LAMDA_m.Caption = Format(LAMDA_m, "0.000000000000000")

    MU_m = G_m_MMP
    txt_MU_m.Caption = Format(MU_m, "0.000000000000000")
    
    ' Constante delta:
    DELTA = (1 - 2 * NU_f_A_MMP ^ 2 * E_f_T_MMP / E_f_A_MMP - NU_f_T_MMP ^ 2 - 2 * NU_f_A_MMP ^ 2 * NU_f_T_MMP * E_f_T_MMP / E_f_A_MMP) / (E_f_A_MMP * E_f_T_MMP ^ 2)
    txt_DELTA.Caption = Format(DELTA, "0.000000000000000")
    
    '##################################################################
    '##################################################################
    '##################################################################

    ' Constantes "C' (C prima)":
    C1_11 = (1 - NU_f_T_MMP ^ 2) / (E_f_T_MMP ^ 2 * DELTA)
    txt_C1_11.Caption = Format(C1_11, "0.000000000000000")
    
    C1_22 = (1 - NU_f_A_MMP ^ 2 * E_f_T_MMP / E_f_A_MMP) / (E_f_A_MMP * E_f_T_MMP * DELTA)
    txt_C1_22.Caption = Format(C1_22, "0.000000000000000")

    C1_33 = C1_22

    C1_12 = (NU_f_A_MMP * E_f_T_MMP / E_f_A_MMP + NU_f_A_MMP * NU_f_T_MMP * E_f_T_MMP / E_f_A_MMP) / (E_f_T_MMP ^ 2 * DELTA)
    txt_C1_12.Caption = Format(C1_12, "0.000000000000000")
    C1_13 = C1_12
    
    C1_23 = (NU_f_T_MMP + NU_f_A_MMP ^ 2 * E_f_T_MMP / E_f_A_MMP) / (E_f_A_MMP * E_f_T_MMP * DELTA)
    txt_C1_23.Caption = Format(C1_23, "0.000000000000000")

    C1_44 = (C1_22 - C1_23) / 2
    txt_C1_44.Caption = Format(C1_44, "0.000000000000000")
    C1_55 = G_f_A_MMP
    txt_C1_55.Caption = Format(C1_55, "0.000000000000000")
    C1_66 = G_f_A_MMP
    
    ' Coeficientes "S" que dependen del volumen de fibra:
    s3 = 0.49247 - 0.47603 * V_f_MMP - 0.02748 * V_f_MMP ^ 2
    txt_s3.Caption = Format(s3, "0.000000000000000")

    s6 = 0.36844 - 0.14944 * V_f_MMP - 0.27152 * V_f_MMP ^ 2
    txt_s6.Caption = Format(s6, "0.000000000000000")

    s7 = 0.12346 - 0.32035 * V_f_MMP + 0.23517 * V_f_MMP ^ 2
    txt_s7.Caption = Format(s7, "0.000000000000000")

    ' Coeficientes "a":
    a_1 = 4 * MU_m ^ 2 - 2 * MU_m * C1_33 + 6 * LAMDA_m * MU_m - 2 * C1_11 * MU_m - 2 * MU_m * C1_23 + C1_23 * C1_11 + 4 * LAMDA_m * C1_12 - 2 * C1_12 ^ 2 - LAMDA_m * C1_33 - 2 * C1_11 * LAMDA_m + C1_11 * C1_33 - LAMDA_m * C1_23
    txt_a_1.Caption = Format(a_1, "0.000000000000000")

    a_2 = 8 * MU_m ^ 3 - 8 * MU_m ^ 2 * C1_33 + 12 * MU_m ^ 2 * LAMDA_m - 4 * MU_m ^ 2 * C1_11 - 2 * MU_m * C1_23 ^ 2 + 4 * MU_m * LAMDA_m * C1_23 + 4 * MU_m * C1_11 * C1_33 - 8 * MU_m * LAMDA_m * C1_33 - 4 * MU_m * C1_12 ^ 2 + 2 * MU_m * C1_33 ^ 2 - 4 * MU_m * LAMDA_m * C1_11 + 8 * MU_m * LAMDA_m * C1_12 + 2 * LAMDA_m * C1_11 * C1_33 + 4 * LAMDA_m * C1_12 * C1_23 - 4 * LAMDA_m * C1_12 * C1_33 - 2 * LAMDA_m * C1_11 * C1_23 - 2 * C1_23 * C1_12 ^ 2 + C1_23 ^ 2 * C1_11 + 2 * C1_33 * C1_12 ^ 2 - C1_11 * C1_33 ^ 2 + LAMDA_m * C1_33 ^ 2 - LAMDA_m * C1_23 ^ 2
    txt_a_2.Caption = Format(a_2, "0.000000000000000")

    a_3 = (4 * MU_m ^ 2 + 4 * LAMDA_m * MU_m - 2 * C1_11 * MU_m - 2 * C1_33 * MU_m - C1_11 * LAMDA_m - C1_33 * LAMDA_m - C1_12 ^ 2) / a_2 + (C1_11 * C1_33 + 2 * LAMDA_m * C1_12) / a_2 - (s3 - s6 / (2 - 2 * NU_m_MMP)) / MU_m
    txt_a_3.Caption = Format(a_3, "0.000000000000000")

    a_4 = (-2 * MU_m * C1_23 + 2 * LAMDA_m * MU_m - LAMDA_m * C1_23 - C1_11 * LAMDA_m - C1_12 ^ 2 + 2 * LAMDA_m * C1_12 + C1_11 * C1_23) / a_2 + s7 / (MU_m * (2 - 2 * NU_m_MMP))
    txt_a_4.Caption = Format(a_4, "0.000000000000000")
    
    ' Coeficientes "C*" (C asterisco):

    C2_11 = LAMDA_m + 2 * MU_m - V_f_MMP * (-a_4 ^ 2 + a_3 ^ 2) * (1 / ((-(2 * MU_m + 2 * LAMDA_m - C1_33 - C1_23) * (a_4 ^ 2 - a_3 ^ 2) / a_1) + (2 * (a_4 - a_3) * ((LAMDA_m - C1_12) ^ 2)) / (a_1 ^ 2)))
    txt_C2_11.Caption = Format(C2_11, "0.000000000000000")

    C2_12 = LAMDA_m + V_f_MMP * ((LAMDA_m - C1_12) * (a_4 - a_3) / a_1) * (1 / (((2 * MU_m + 2 * LAMDA_m - C1_33 - C1_23) * (a_3 ^ 2 + a_4 ^ 2) / a_1) + (2 * (a_4 - a_3) * ((LAMDA_m - C1_12) ^ 2) / a_1 ^ 2)))
    txt_C2_12.Caption = Format(C2_12, "0.000000000000000")

    C2_22 = LAMDA_m + 2 * MU_m - V_f_MMP * ((2 * MU_m + 2 * LAMDA_m - C1_33 - C1_23) * a_3 / a_1 - ((LAMDA_m - C1_12) ^ 2) / a_1 ^ 2) * (1 / ((2 * MU_m + 2 * LAMDA_m - C1_33 - C1_23) * (a_3 ^ 2 - a_4 ^ 2) / a_1 + 2 * (a_4 - a_3) * ((LAMDA_m - C1_12) ^ 2) / a_1 ^ 2))
    txt_C2_22.Caption = Format(C2_22, "0.000000000000000")

    C2_23 = LAMDA_m + V_f_MMP * ((2 * MU_m + 2 * LAMDA_m - C1_33 - C1_23) * a_4 / a_1 - ((LAMDA_m - C1_12) ^ 2) / a_1 ^ 2) * (1 / ((2 * MU_m + 2 * LAMDA_m - C1_33 - C1_23) * (a_3 ^ 2 - a_4 ^ 2) / a_1 + 2 * (a_4 - a_3) * ((LAMDA_m - C1_12) ^ 2) / a_1 ^ 2))
    txt_C2_23.Caption = Format(C2_23, "0.000000000000000")

    C2_44 = MU_m - V_f_MMP / ((2 / (2 * MU_m - C1_22 + C1_23)) - (2 * s3 - 4 * s7 / (2 - 2 * NU_m_MMP)) / MU_m)
    txt_C2_44.Caption = Format(C2_44, "0.000000000000000")

    C2_66 = MU_m - V_f_MMP / (1 / (MU_m - C1_66) - s3 / MU_m)
    txt_C2_66.Caption = Format(C2_66, "0.000000000000000")
    
    '##################################################################
    '##################################################################
    '##################################################################

    ' Constantes de la matriz rigidez:
    ' # Finalmente, relaciona los coeficientes C* con las constantes de la matriz rigidez Cij:
    C_11 = C2_11
    txt_C_11.Caption = Format(C_11, "0.000000000000000")
    txt_m_C_11.Caption = Format(C_11, "0.000000000000000")

    C_12 = C2_12
    txt_C_12.Caption = Format(C_12, "0.000000000000000")
    txt_m_C_12.Caption = Format(C_12, "0.000000000000000")
    txt_m_C_21.Caption = Format(C_12, "0.000000000000000")
    txt_m_C_13.Caption = Format(C_12, "0.000000000000000")
    txt_m_C_31.Caption = Format(C_12, "0.000000000000000")

    C_13 = C2_12

    C_22 = 3 * C2_22 / 4 + C2_23 / 4 + C2_44 / 4
    txt_C_22.Caption = Format(C_22, "0.000000000000000")
    txt_m_C_22.Caption = Format(C_22, "0.000000000000000")
    txt_m_C_33.Caption = Format(C_22, "0.000000000000000")

    C_33 = C_22

    C_23 = C2_22 / 4 + 3 * C2_23 / 4 - C2_44 / 4
    txt_C_23.Caption = Format(C_23, "0.000000000000000")
    txt_m_C_23.Caption = Format(C_23, "0.000000000000000")
    txt_m_C_32.Caption = Format(C_23, "0.000000000000000")

    C_44 = C2_44
    txt_C_44.Caption = Format(C_44, "0.000000000000000")
    txt_m_C_44.Caption = Format(C_44, "0.000000000000000")

    C_55 = C2_66
    txt_C_55.Caption = Format(C_55, "0.000000000000000")
    txt_m_C_55.Caption = Format(C_55, "0.000000000000000")
    txt_m_C_66.Caption = Format(C_55, "0.000000000000000")

    C_66 = C_55
    
    '##################################################################
    '##################################################################
    '##################################################################
    
    'Reemplazamos los valores de la matriz anterior por los coeficientes calculados anteriormente:
    matriz_rigidez(1, 1) = C_11
    matriz_rigidez(1, 2) = C_12
    matriz_rigidez(1, 3) = C_13
    matriz_rigidez(2, 1) = C_12
    matriz_rigidez(2, 2) = C_22
    matriz_rigidez(2, 3) = C_23
    matriz_rigidez(3, 1) = C_13
    matriz_rigidez(3, 2) = C_23
    matriz_rigidez(3, 3) = C_33
    matriz_rigidez(4, 4) = C_44
    matriz_rigidez(5, 5) = C_55
    matriz_rigidez(6, 6) = C_66

    contenidoMatriz = ""

    ' Recorremos la matriz y concatenamos los elementos en la variable
    For i = 1 To 6
        For j = 1 To 6
            contenidoMatriz = contenidoMatriz & matriz_rigidez(i, j) & vbTab ' Usamos vbTab para separar los elementos con una tabulación
        Next j
        contenidoMatriz = contenidoMatriz & vbCrLf ' Usamos vbCrLf para agregar un salto de línea después de cada fila
    Next i
    
    Dim n As Integer
    n = UBound(matriz_rigidez, 1)

    ' Inicializar las matrices L y U
    Dim L() As Double
    Dim U() As Double
    ReDim L(1 To n, 1 To n)
    ReDim U(1 To n, 1 To n)

    ' Realizar la descomposición LU
    Dim ii As Integer, jj As Integer, k As Integer
    For ii = 1 To n
        L(ii, ii) = 1
        For jj = ii To n
            Dim sum As Double
            sum = 0
            For k = 1 To ii - 1
                sum = sum + L(ii, k) * U(k, jj)
            Next k
            U(ii, jj) = matriz_rigidez(ii, jj) - sum
        Next jj

        For jj = ii + 1 To n
            Dim suma As Double
            suma = 0
            For k = 1 To ii - 1
                suma = suma + L(jj, k) * U(k, ii)
            Next k
            L(jj, ii) = (matriz_rigidez(jj, ii) - suma) / U(ii, ii)
        Next jj
    Next ii

    ' Ahora que tenemos L y U, podemos encontrar la matriz inversa utilizando la descomposición LU
    Dim matriz_identidad() As Double
    ReDim matriz_identidad(1 To n, 1 To n)
    For ii = 1 To n
        For jj = 1 To n
            matriz_identidad(ii, jj) = IIf(ii = jj, 1, 0)
        Next jj
    Next ii

    Dim matriz_flexibilidad() As Double
    ReDim matriz_flexibilidad(1 To n, 1 To n)

    ' Resolver para cada columna de la matriz identidad
    For k = 1 To n
        Dim y() As Double
        ReDim y(1 To n, 1 To 1)
        For ii = 1 To n
            y(ii, 1) = matriz_identidad(ii, k)
            For jj = 1 To ii - 1
                y(ii, 1) = y(ii, 1) - L(ii, jj) * y(jj, 1)
            Next jj
        Next ii

        For ii = n To 1 Step -1
            matriz_flexibilidad(ii, k) = y(ii, 1)
            For jj = ii + 1 To n
                matriz_flexibilidad(ii, k) = matriz_flexibilidad(ii, k) - U(ii, jj) * matriz_flexibilidad(jj, k)
            Next jj
            matriz_flexibilidad(ii, k) = matriz_flexibilidad(ii, k) / U(ii, ii)
        Next ii
    Next k

    
    Dim contenidoMatriz2 As String

    contenidoMatriz2 = ""

    ' Recorremos la matriz y concatenamos los elementos en la variable
    For ii = 1 To 6
        For jj = 1 To 6
            contenidoMatriz2 = contenidoMatriz2 & matriz_flexibilidad(ii, jj) & vbTab ' Usamos vbTab para separar los elementos con una tabulación
        Next jj
        contenidoMatriz2 = contenidoMatriz2 & vbCrLf ' Usamos vbCrLf para agregar un salto de línea después de cada fila
    Next ii

    '##################################################################
    '##################################################################
    '##################################################################
    S_11 = matriz_flexibilidad(1, 1)
    txt_S_11.Caption = Format(S_11, "0.000000000000000")
    txt_m_S_11.Caption = Format(S_11, "0.000000000000000")

    S_12 = matriz_flexibilidad(1, 2)
    S_13 = S_12
    txt_S_12.Caption = Format(S_12, "0.000000000000000")
    txt_m_S_12.Caption = Format(S_12, "0.000000000000000")
    txt_m_S_21.Caption = Format(S_12, "0.000000000000000")
    txt_m_S_13.Caption = Format(S_12, "0.000000000000000")
    txt_m_S_31.Caption = Format(S_12, "0.000000000000000")

    S_22 = matriz_flexibilidad(2, 2)
    S_33 = S_22
    txt_S_22.Caption = Format(S_22, "0.000000000000000")
    txt_m_S_22.Caption = Format(S_22, "0.000000000000000")
    txt_m_S_33.Caption = Format(S_22, "0.000000000000000")

    S_23 = matriz_flexibilidad(2, 3)
    txt_S_23.Caption = Format(S_23, "0.000000000000000")
    txt_m_S_23.Caption = Format(S_23, "0.000000000000000")
    txt_m_S_32.Caption = Format(S_23, "0.000000000000000")

    S_44 = matriz_flexibilidad(4, 4)
    txt_S_44.Caption = Format(S_44, "0.000000000000000")
    txt_m_S_44.Caption = Format(S_44, "0.000000000000000")

    S_55 = matriz_flexibilidad(5, 5)
    S_66 = matriz_flexibilidad(6, 6)
    txt_S_55.Caption = Format(S_55, "0.000000000000000")
    txt_m_S_55.Caption = Format(S_55, "0.000000000000000")
    txt_m_S_66.Caption = Format(S_55, "0.000000000000000")

    '##################################################################
    '##################################################################
    '##################################################################
    
    
    'Cálculo del Módulo Longitudinal:
    E1_MMP = 1 / matriz_flexibilidad(1, 1)

    'Cálculo del Módulo Transversal:
    E2_MMP = 1 / matriz_flexibilidad(2, 2)

    'Cálculo del la Relacion de Poisson en el plano:
    NU12_MMP = -matriz_flexibilidad(2, 1) / matriz_flexibilidad(1, 1)

    'Cálculo del Módulo de corte en el Plano:
    G12_MMP = 1 / matriz_flexibilidad(5, 5)

    'Cálculo del Módulo de corte interlaminar:
    G13_MMP = G12_MMP
    
    'Cálculo del Módulo de corte fuera del plano MMP:
    G23_MMP = 1 / matriz_flexibilidad(4, 4)
    
    'Cálculo de la Relación de Poisson en el plano:
    NU13_MMP = NU12_MMP
    
    'Cálculo de la Relación de Poisson fuera del plano:

    NU23_MMP = -matriz_flexibilidad(3, 2) / matriz_flexibilidad(2, 2)

    'Relacionamos las variables con los marcadores de la tabla del documento Word:
    Set var_E1_MMP = ActiveDocument.Bookmarks("MMP_E_1").Range
    Set var_E2_MMP = ActiveDocument.Bookmarks("MMP_E_2").Range
    Set var_NU12_MMP = ActiveDocument.Bookmarks("MMP_NU_12").Range
    Set var_G12_MMP = ActiveDocument.Bookmarks("MMP_G_12").Range
    Set var_G13_MMP = ActiveDocument.Bookmarks("MMP_G_13").Range
    Set var_G23_MMP = ActiveDocument.Bookmarks("MMP_G_23").Range
    Set var_NU13_MMP = ActiveDocument.Bookmarks("MMP_NU_13").Range
    Set var_NU23_MMP = ActiveDocument.Bookmarks("MMP_NU_23").Range

    'Relacionamos las variables calculadas con el respectivo campo del formulario:
    txt_E1_MMP.Caption = Format(E1_MMP, "0.000000000000000")
    txt_E2_MMP.Caption = Format(E2_MMP, "0.000000000000000")
    txt_NU12_MMP.Caption = Format(NU12_MMP, "0.000000000000000")
    txt_G12_MMP.Caption = Format(G12_MMP, "0.000000000000000")
    txt_G13_MMP.Caption = Format(G13_MMP, "0.000000000000000")
    txt_G23_MMP.Caption = Format(G23_MMP, "0.000000000000000")
    txt_NU13_MMP.Caption = Format(NU13_MMP, "0.000000000000000")
    txt_NU23_MMP.Caption = Format(NU23_MMP, "0.000000000000000")
    
    'Relacionamos las variables calculadas con las variables de los marcadores del documento Word:
    var_E1_MMP = Format(E1_MMP, "0.000000000000000")
    var_E2_MMP = Format(E2_MMP, "0.000000000000000")
    var_NU12_MMP = Format(NU12_MMP, "0.000000000000000")
    var_G12_MMP = Format(G12_MMP, "0.000000000000000")
    var_G13_MMP = Format(G13_MMP, "0.000000000000000")
    var_G23_MMP = Format(G23_MMP, "0.000000000000000")
    var_NU13_MMP = Format(NU13_MMP, "0.000000000000000")
    var_NU23_MMP = Format(NU23_MMP, "0.000000000000000")

End Sub


Private Sub MultiPage1_Change()

End Sub

      
    


Codigos de la RM y del MMP en MatLab

      
        % Datos de Entrada
        E_f_a=239.4; %Modulo de young de la fibra axial (o longitudinal)
        E_f_t=13; %Modulo de young de la fibra transversal
        E_m=3.4; %Modulo de young de la matriz
        NU_f_a=0.47; %Relación de Poisson de la fibra axial
        NU_f_t=0.17; %Relación de Poisson de la fibra transversal
        NU_m=0.31; %Relación de Poisson de la matriz
        G_f_a=45.4; %Módulo de corte de la fibra axial
        G_f_t=5.6; %Módulo de corte de la fibra transversal
        G_m= E_m/(2*(1+ NU_m)); %Módulo de corte de la matriz
        DELTA_m=(E_m*NU_m)/((1+NU_m)*(1-2*NU_m)); %Constante de Lamé DELTA de la matriz

        % Regla de las mezclas
          %Cálculo de las constantes elasticas en el plano E1, E2, NU12, y
          %G12 mediante la regla de las mezclas o ROM (rule of mixtures).
          %El modulo de corte fuera del plano se calcula mediante el parámetro de partición de tensiones semi-empirico 
          a=E_f_a
          b=E_m
          for i=0:1:0.1
            c(i)=a*i+(b)*(1-i);
            NU_12_ROM=(NU_f_a)*(V_f)+(NU_m)*(1-(V_f));
            E_2_ROM=(((1-(V_f)))/(E_m)+(V_f)/(E_f_a))^(-1);
            G_12_ROM=(((1-(V_f)))/(G_m)+(V_f)/(G_f_a))^(-1);
            ETA_4_ROM=((3-4*(NU_m)+(((G_m))/((G_f_a)))))/((4*(1-NU_m)));
            G_23_ROM=(G_m)*((V_f)+(ETA_4_ROM)*(1-(V_f)))/((ETA_4_ROM)*(1-(V_f))+(V_f)*(G_m)/(G_f_a));
            NU_23_ROM=(E_2_ROM)/(2*(G_23_ROM))-1;
            E_1_ROM=c
          end

        % Modelo de la microestructura periódica
          E1PMM=[]; %zeros(1,1)
          NU12PMM=[] ; %zeros(1,1)
          E2PMM=[]; %zeros(1,1)
          G12PMM=[]; % zeros(1,1)
          G23PMM=[]; % zeros(1,1)
          NU23PMM=[]; %zeros(1,1)
          c=zeros(6,6,101);
          s=zeros(6,6,101);
          DELTA=((1-2*((NU_f_a)^2)*(((E_f_t))/((E_f_a)))-((NU_f_t)^2)-2*((NU_f_a)^2)*(NU_f_t)*(((E_f_t))/((E_f_a)))))/(((E_f_a)*((E_f_t)^2)));
          C1_11=((1-((NU_f_t)^2)))/((((E_f_t)^2)*(DELTA)));
          C1_22=((1-((NU_f_a)^2)*(((E_f_t))/((E_f_a)))))/(((E_f_a)*(E_f_t)*(DELTA)));
          C1_33=C1_22;
          C1_12=(((NU_f_a)*(((E_f_t))/((E_f_a)))+(NU_f_a)*(NU_f_t)*((E_f_t))/((E_f_a))))/((((E_f_t)^2)*(DELTA)));
          C1_13=C1_12;
          C1_23=(((NU_f_t)+((NU_f_a)^2)*(((E_f_t))/((E_f_a)))))/(((E_f_a)*(E_f_t)*(DELTA)));
          C1_44=(((C1_22)-(C1_23)))/2;
          C1_55=G_f_a;
          C1_66=G_f_a;
          a_1=4*(G_m^2)-2*(G_m)*(C1_33)+6*(DELTA_m)*(G_m)-2*(C1_11)*(G_m)-2*(G_m)*(C1_23)+(C1_23)*(C1_11)+4*(DELTA_m)*(C1_12)-2*(C1_12^2)-(DELTA_m)*(C1_33)-2*(C1_11)*(DELTA_m)+(C1_11)*(C1_33)-(DELTA_m)*(C1_23);
          a_2=8*(G_m^3)-8*(G_m^2)*(C1_33)+12*(G_m^2)*(DELTA_m)-4*(G_m^2)*(C1_11)-2*(G_m)*(C1_23^2)+4*(G_m)*(DELTA_m)*(C1_23)+4*(G_m)*(C1_11)*(C1_33)-8*(G_m)*(DELTA_m)*(C1_33)-4*(G_m)*(C1_12^2)+2*(G_m)*(C1_33^2)-4*(G_m)*(DELTA_m)*(C1_11)+8*(G_m)*(DELTA_m)*(C1_12)+2*(DELTA_m)*(C1_11)*(C1_33)+4*(DELTA_m)*(C1_12)*(C1_23)-4*(DELTA_m)*(C1_12)*(C1_33)-2*(DELTA_m)*(C1_11)*(C1_23)-2*(C1_23)*(C1_12^2)+(C1_23^2)*(C1_11)+2*(C1_33)*(C1_12^2)-(C1_11)*(C1_33^2)+(DELTA_m)*(C1_33^2)-(DELTA_m)*(C1_23^2);
          for i=1:101
            s_3(i)=0.49247-0.47603*(0.01*i-0.01)-0.02748*((0.01*i-0.01)^2);
            s_6(i)=0.36844-0.14944*(0.01*i-0.01)-0.27152*((0.01*i-0.01)^2);
            s_7(i)=0.12346-0.32035*(0.01*i-0.01)-0.23517*((0.01*i-0.01)^2);
            a_3(i)=(4*(G_m^2)+4*(DELTA_m)*(G_m)-2*(C1_11)*(G_m)-2*(C1_33)*(G_m)-(C1_11)*(DELTA_m)-(C1_33)*(DELTA_m)-(C1_12^2))/(a_2)+((C1_11)*(C1_33)+2*(DELTA_m)*(C1_12))/((a_2))-((s_3(i))-((s_6(i)))/(2-2*(NU_m)))/((G_m));
            a_4(i)=(-2*(G_m)*(C1_23)+2*(DELTA_m)*(G_m)-(DELTA_m)*(C1_23)-(C1_11)*(DELTA_m)-(C1_12^2)+2*(DELTA_m)*(C1_12)+(C1_11)*(C1_23))/(a_2)+((s_7(i)))/((G_m)*(2-2*(NU_m)));
            C2_11(i)=(DELTA_m)+2*(G_m)-(0.01*i-0.01)*(-((a_4(i))^2)+((a_3(i))^2))*(1/((-((2*(G_m)+2*(DELTA_m)-(C1_33)-(C1_23))*(((a_4(i))^2)-((a_3(i))^2)))/((a_1)))+((2*((a_4(i))-(a_3(i)))*((DELTA_m)-(C1_12))^2)/(((a_1)^2)))));
            C2_12(i)=(DELTA_m)+(0.01*i-0.01)*((((DELTA_m)-(C1_12))*((a_4(i))-(a_3(i))))/((a_1)))*(1/((((2*(G_m)+2*(DELTA_m)-(C1_33)-(C1_23))*(((a_3(i))^2)+((a_4(i))^2)))/((a_1)))+((2*((a_4(i))-(a_3(i)))*((DELTA_m)-(C1_12))^2)/(((a_1)^2)))));
            C2_22(i)=(DELTA_m)+2*(G_m)-(0.01*i-0.01)*((((2*(G_m)+2*(DELTA_m)-(C1_33)-(C1_23))*(a_3(i))))/((a_1))-((((DELTA_m)-(C1_12))^2))/(((a_1)^2)))*(1/(((2*(G_m)+2*(DELTA_m)-(C1_33)-(C1_23))*((a_3(i))^2-((a_4(i))^2)))/((a_1))+((2*((a_4(i))-(a_3(i)))*((DELTA_m)-(C1_12))^2))/(((a_1)^2))));
            C2_23(i)=(DELTA_m)+(0.01*i-0.01)*((((2*(G_m)+2*(DELTA_m)-(C1_33)-(C1_23))*(a_4(i))))/((a_1))-((((DELTA_m)-(C1_12))^2))/(((a_1)^2)))*(1/((((2*(G_m)+2*(DELTA_m)-(C1_33)-(C1_23))*(((a_3(i))^2)-((a_4(i))^2)))/((a_1))+((2*((a_4(i))-(a_3(i)))*((DELTA_m)-(C1_12))^2))/(((a_1)^2)))));
            C2_44(i)=(G_m)-((0.01*i-0.01))/((2/((2*(G_m)-(C1_22)+(C1_23)))-((2*(s_3(i))-((4*(s_7(i))))/((2-2*(NU_m)))))/((G_m))));
            C2_66(i)=(G_m)-((0.01*i-0.01))/((1/(((G_m)-(C1_66)))-((s_3(i)))/((G_m))));
            C_11(i)=C2_11(i);
            C_12(i)=C2_12(i);
            C_13(i)=C_12(i);
            C_22(i)=3/4*(C2_22(i))+1/4*(C2_23(i))+1/4*(C2_44(i));
            C_33(i)=C_22(i);
            C_23(i)=1/4*(C2_22(i))+3/4*(C2_23(i))-1/4*(C2_44(i));
            C_44(i)=C2_44(i);
            C_55(i)=C2_66(i);
            C_66(i)=C_55(i);
            c(1,1,i)=C_11(i);
            c(1,2,i)=C_12(i);
            c(1,3,i)=C_13(i);
            c(2,1,i)=C_12(i);
            c(2,2,i)=C_22(i);
            c(2,3,i)=C_23(i);
            c(3,1,i)=C_13(i);
            c(3,2,i)=C_23(i);
            c(3,3,i)=C_33(i);
            c(4,4,i)=C_44(i);
            c(5,5,i)=C_55(i);
            c(6,6,i)=C_66(i);
            s(:,:,i)=inv(c(:,:,i));
            E1PMM(i)=1/s(1,1,i);
            E2PMM(i)=1/(s(2,2,i));
            NU12PMM(i)=-(s(2,1,i))/(s(1,1,i));
            NU23PMM(i)=-(s(3,2,i))/(s(2,2,i));
            G12PMM(i)=-1/(s(5,5,i));
            G23PMM(i)=1/(s(4,4,i));
          end