- II.4.1 Two Class Methods
- II.4.2 Creation of an object
- II.4.3 Identifying a laminate
- II.4.4 Manipulation of plies
- II.4.5 Other data
- II.4.6 Laminate properties
- II.4.7 Laminate load response
- II.4.7.1 Calculation of the load response
- II.4.7.2 Laminate internal loads and strains
- II.4.7.3 Ply stresses and strains
- II.4.7.4 Temperatures and moistures at ply level
- II.4.7.5 Other ply results

- II.4.8 Laminate finite element load response

- II.4.9 Calculation of criteria from FE stresses or strains
- II.4.10 Management of Units
- II.4.11 Saving or initializing with NDF lines
- II.4.12 One iterator
- II.4.13 Other methods

II.4 The ``ClaLam'' class

The ``ClaLam'' class is used to store lay-ups and calculate laminate mechanical properties and load responses. They are characterized by the lay-up the define.

Table II.4.1 gives the list of methods defined in ``ClaLam'' class.

(FeResPost list of classes is given in
Table 1
page .) |
||

Method Name |
Description |
Example |

Creation and initialization methods
table.ClaLam.methods |
||

ClaLam.newnew | II.4.2 | IV.5.2 |

ClaLam.initializeinitialize | II.4.2 | |

ClaLam.cloneclone | II.4.13 | |

Class single methods |
||

ClaLam.setMuxMuysetMuxMuy | II.4.1 | |

ClaLam.getMuxMuygetMuxMuy | II.4.1 | |

Manipulations of the laminate plies |
||

ClaLam.clearPliesclearPlies | II.4.4 | |

ClaLam.addPlyaddPly | II.4.4 | IV.5.2 |

ClaLam.setNbrPliessetNbrPlies | II.4.4 | |

ClaLam.setPlysetPly | II.4.4 | |

ClaLam.getNbrPliesgetNbrPlies | II.4.4 | |

ClaLam.getPlyDatagetPlyData | II.4.4 | |

Other laminate data |
||

ClaLam.clearAllowablesclearAllowables | II.4.5 | |

ClaLam.insertAllowablesinsertAllowables | II.4.5 | IV.5.6 |

ClaLam.fillAllowablesfillAllowables | II.4.5 | |

ClaLam.getDataAllowablesgetDataAllowables | II.4.5 | |

ClaLam.setRefTsetRefT | II.4.5 | |

ClaLam.getRefTgetRefT | II.4.5 | |

ClaLam.setRefHsetRefH | II.4.5 | |

ClaLam.getRefHgetRefH | II.4.5 | |

ClaLam.setLaminateIlsssetLaminateIlss | II.4.5 | IV.5.4.3 |

ClaLam.setAllPliesIlsssetAllPliesIlss | II.4.5 | IV.5.4.3 |

Laminate properties |
||

ClaLam.calcLaminatePropertiescalcLaminateProperties | II.4.6 | IV.5.3 |

ClaLam.get_thicknessget_thickness | II.4.6 | |

ClaLam.get_surfacicMassget_surfacicMass | II.4.6 | |

ClaLam.get_averageDensityget_averageDensity | II.4.6 | |

ClaLam.get_ABBDget_ABBD | II.4.6 | IV.5.2 |

ClaLam.get_Gget_G | II.4.6 | IV.5.5 |

ClaLam.get_alfaEh1get_alfaEh1 | II.4.6 | IV.5.2 |

ClaLam.get_alfaEh2get_alfaEh2 | II.4.6 | |

ClaLam.get_alfaEh3get_alfaEh3 | II.4.6 | |

ClaLam.get_alfaGh1get_alfaGh1 | II.4.6 | |

ClaLam.get_alfaGh2get_alfaGh2 | II.4.6 | |

ClaLam.get_betaEh1get_betaEh1 | II.4.6 | |

ClaLam.get_betaEh2get_betaEh2 | II.4.6 | |

ClaLam.get_betaEh3get_betaEh3 | II.4.6 | |

ClaLam.get_betaGh1get_betaGh1 | II.4.6 | |

ClaLam.get_betaGh2get_betaGh2 | II.4.6 | |

ClaLam.get_abbd_complMatget_abbd_complMat | II.4.6 | |

ClaLam.get_g_complMatget_g_complMat | II.4.6 | |

ClaLam.get_alfae0get_alfae0 | II.4.6 | |

ClaLam.get_alfae1get_alfae1 | II.4.6 | |

ClaLam.get_alfak0get_alfak0 | II.4.6 | |

ClaLam.get_alfak1get_alfak1 | II.4.6 | |

ClaLam.get_alfas0get_alfas0 | II.4.6 | |

ClaLam.get_alfas1get_alfas1 | II.4.6 | |

ClaLam.get_betae0get_betae0 | II.4.6 | |

ClaLam.get_betae1get_betae1 | II.4.6 | |

ClaLam.get_betak0get_betak0 | II.4.6 | |

ClaLam.get_betak1get_betak1 | II.4.6 | |

ClaLam.get_betas0get_betas0 | II.4.6 | |

ClaLam.get_betas1get_betas1 | II.4.6 | |

ClaLam.get_engineeringget_engineering | II.4.6 | IV.5.4.1 |

ClaLam.get_LambdaTget_LambdaT | II.4.6 | IV.5.3 |

ClaLam.get_R33Tget_R33T | II.4.6 | IV.5.3 |

ClaLam.get_RhoCpHget_RhoCpH | II.4.6 | IV.5.3 |

ClaLam.get_LambdaHget_LambdaH | II.4.6 | |

ClaLam.get_R33Hget_R33H | II.4.6 | |

Laminate load response |
||

ClaLam.calcResponsecalcResponse | II.4.7.1 | IV.5.4.2 |

ClaLam.isThermalLoadingDefinedisThermalLoadingDefined | II.4.7.2 | |

ClaLam.getDeltaTgetDeltaT | II.4.7.2 | IV.5.4.1 |

ClaLam.getT0getT0 | II.4.7.2 | |

ClaLam.getGradTgetGradT | II.4.7.2 | |

ClaLam.isMoistureLoadingDefinedisMoistureLoadingDefined | II.4.7.2 | |

ClaLam.getDeltaHgetDeltaH | II.4.7.2 | |

ClaLam.getH0getH0 | II.4.7.2 | |

ClaLam.getGradHgetGradH | II.4.7.2 | |

ClaLam.isMechanicalLoadingDefinedisMechanicalLoadingDefined | II.4.7.2 | |

ClaLam.getNormalForcesgetNormalForces | II.4.7.2 | IV.5.4.1 |

ClaLam.getMomentsgetMoments | II.4.7.2 | IV.5.4.1 |

ClaLam.getShearForcesgetShearForces | II.4.7.2 | IV.5.4.1 |

ClaLam.getNormalStrainsgetNormalStrains | II.4.7.2 | IV.5.4.1 |

ClaLam.getCurvaturesgetCurvatures | II.4.7.2 | IV.5.4.1 |

ClaLam.getShearStrainsgetShearStrains | II.4.7.2 | IV.5.4.1 |

ClaLam.getAverageInPlaneStressesgetAverageInPlaneStresses | II.4.7.2 | IV.5.4.1 |

ClaLam.getFlexuralStressesgetFlexuralStresses | II.4.7.2 | IV.5.4.1 |

ClaLam.getAverageShearStressesgetAverageShearStresses | II.4.7.2 | IV.5.4.1 |

ClaLam.getAverageInPlaneStrainsgetAverageInPlaneStrains | II.4.7.2 | IV.5.4.1 |

ClaLam.getFlexuralStrainsgetFlexuralStrains | II.4.7.2 | IV.5.4.1 |

ClaLam.getAverageShearStrainsgetAverageShearStrains | II.4.7.2 | IV.5.4.1 |

ClaLam.getPliesStrainsgetPliesStrains | II.4.7.3 | IV.5.4.1 |

ClaLam.getPliesStressesgetPliesStresses | II.4.7.3 | IV.5.4.1 |

ClaLam.getPliesMechanicalStrainsgetPliesMechanicalStrains | II.4.7.3 | IV.5.4.1 |

ClaLam.getPliesStrainsWrtLamAxesgetPliesStrainsWrtLamAxes | II.4.7.3 | |

ClaLam.getPliesStressesWrtLamAxesgetPliesStressesWrtLamAxes | II.4.7.3 | |

ClaLam.getPliesMechanicalStrainsWrtLamAxesgetPliesMechanicalStrainsWrtLamAxes | II.4.7.3 | |

ClaLam.getPliesTgetPliesT | II.4.7.4 | |

ClaLam.getPliesDeltaTgetPliesDeltaT | II.4.7.4 | |

ClaLam.getPliesHgetPliesH | II.4.7.4 | |

ClaLam.getPliesDeltaHgetPliesDeltaH | II.4.7.4 | |

ClaLam.getDerivedgetDerived | II.4.7.5 | IV.5.4.1 |

ClaLam.getMaxDerivedgetMaxDerived | II.4.7.5 | |

ClaLam.getMinDerivedgetMinDerived | II.4.7.5 | |

ClaLam.getFailureIndicesgetFailureIndices | II.4.7.5 | IV.5.4.1 |

ClaLam.getMaxFailureIndicesgetMaxFailureIndices | II.4.7.5 | |

ClaLam.getMinFailureIndicesgetMinFailureIndices | II.4.7.5 | |

ClaLam.getReserveFactorsgetReserveFactors | II.4.7.5 | IV.5.4.1 |

ClaLam.getMaxReserveFactorsgetMaxReserveFactors | II.4.7.5 | |

ClaLam.getMinReserveFactorsgetMinReserveFactors | II.4.7.5 | |

ClaLam.getStrengthRatiosgetStrengthRatios | II.4.7.5 | IV.5.4.1 |

ClaLam.getMaxStrengthRatiosgetMaxStrengthRatios | II.4.7.5 | |

ClaLam.getMinStrengthRatiosgetMinStrengthRatios | II.4.7.5 | |

ClaLam.calcFiniteElementResponsecalcFiniteElementResponse | II.4.8.1 | |

ClaLam.reInitAllPliesAccelMatricesreInitAllPliesAccelMatrices | II.4.8.2 | |

ClaLam.calcFiniteElementCriteriacalcFiniteElementCriteria | II.4.9 | IV.5.6 |

Management of units methods |
||

ClaLam.getUnitsgetUnits | II.4.10 | |

ClaLam.setUnitssetUnits | II.4.10 | |

ClaLam.changeUnitschangeUnits | II.4.10 | |

Iterators |
||

ClaLam.each_plyeach_ply | II.4.12 | IV.5.5 |

NDF lines |
||

ClaLam.initWithNeutralLinesinitWithNeutralLines | II.4.11 | |

ClaLam.getNeutralLinesgetNeutralLines | II.4.11 | |

Attributes |
||

ClaLam.IdId | II.4.3 | |

II.4.1 Two Class Methods

One shows in section II.1.6 that two arbitrary parameters and define the relations between and partial derivatives of laminate bending moment components and out-of-plane shear forces. The default values of these parameters are .

Two Class Methods allow the manipulation of these parameters:

- ``ClaLam.setMuxMuysetMuxMuy'' has two Real parameters and is used to set the values of and respectively.
- ``ClaLam.getMuxMuygetMuxMuy'' returns an Array of two Real objects corresponding to and respectively.

II.4.2 Creation of an object

The singleton method ``ClaLam.newnew'' is used to create ClaLam objects. This method has no argument. Nor has the ``ClaLam.initializeinitialize'' method an argument.)

II.4.3 Identifying a laminate

Two methods allow the manipulation of the identifier of ClaLam objects (``ClaLam.IdId'' attribute):

- ``ClaLam.IdId'' attribute setter has one argument and sets the identifier. The argument is an identifier (an integer, a String or an Array[int,String]).
- ``ClaLam.IdId'' attribute getter has no argument and returns the identifier of the object (same types as above), or nil if no identifier has been attributed to the object.

II.4.4 Manipulation of plies

The ``ClaLam.clearPliesclearPlies'' method has no argument and erases all the plies defining a ClaLam object. After the method has been called, the number of plies of the laminate is zero.

One way to define the plies of the laminate is to add successively all the plies defined in the laminate starting at the bottom layer. The ``ClaLam.addPlyaddPly'' method allows to insert plies in a ClaLam. This method has four or five arguments.

- ``PlyId'' is the global identifier of the ply. This identifier can be an integer, a String or a pair "integer-String" stored in an Array. If one decides not to specify a global ID for the ply, the argument can be omitted (optional argument).
- ``MatId'' is the material id of the ply. This identifier must correspond to an existing material stored in a ClaDb object. The identifier is used internally by the ClaLam class to retrieve material properties and calculate laminate properties.
- ``Thickness'' is a Real argument corresponding to the thickness of the ply. The units must be consistent with those of other data. For example, the thickness may have to be given in meters.
- ``Angle'' is a Real argument corresponding to the orientation of the ply in the laminate. This angle is specified in degrees.
- ``IlssInf'' is the inter-laminar shear stress allowable between the ply being added and the previous ply (lower ply in the layup).

Instead of defining the sequence of plies sequentially by successive calls to ``ClaLam.addPlyaddPly'' method, the data of each ply can also be defined in random order by calls to ``ClaLam.setPlysetPly'' method. Its arguments are nearly the same as those of the ``ClaLam.addPlyaddPly'' method:

- ``Index'' is the position in laminate of the ply for which data are defined. It is an integer such that where is the number of plies defined in the Laminate.
- ``PlyId'' (see ``addPly'' method). This argument is optional.
- ``MatId'' (see ``addPly'' method).
- ``Thickness'' (see ``addPly'' method).
- ``Angle'' (see ``addPly'' method).
- ``IlssInf'' (see ``addPly'' method).

Two methods allow to access and examine the plies stored in a ClaLam object:

- ``ClaLam.getNbrPliesgetNbrPlies'' has no argument and returns the number of plies.
- ``ClaLam.getPlyDatagetPlyData'' returns the data for one specific ply. The method
has one argument: the local index of the ply in the laminate
(its position in the lay-up). if the laminate has
plies, then the
index must be
. (The first ply has index 0.)
The method returns an Array containing 5 elements corresponding to the arguments of the ``ClaLam.addPlyaddPly'' method.

Obviously, the different data inserted in, or retrieved from the ClaLam object should be consistent with the set of units attributed to the same object. This set of units can be attributed to the object after initialization of the data.

II.4.5 Other data

The reference temperature of a laminate is accessed with the two following methods:

- ``ClaLam.clearAllowablesclearAllowables'' has no arguments and erases all the allowables stored in a ClaLam.
- ``ClaLam.insertAllowablesinsertAllowables'' is used to add material allowables. This method must be used if the calculation of failure indices or reserve factor is done using laminate allowables instead of ply materials allowables. (See section II.3.3 for more explanation on the use of this method.)
- ``ClaLam.getDataAllowablesgetDataAllowables'' has no arguments and returns a Hash containing the data defining allowables. (See the corresponding method in ClaMat class section II.3.3.)
- ``ClaLam.setRefTsetRefT'' has one Real argument and sets the reference temperature of the laminate.
- ``ClaLam.getRefTgetRefT'' returns the reference temperature (a Real object).
- ``ClaLam.setRefHsetRefH'' has one Real argument and sets the reference moisture of the laminate.
- ``ClaLam.getRefHgetRefH'' returns the reference moisture (a Real object).
- ``ClaLam.setLaminateIlsssetLaminateIlss'' has one Real argument and sets the value of laminate inter-laminar shear strength allowable at laminate level.
- ``ClaLam.setAllPliesIlsssetAllPliesIlss'' has one Real argument and sets the value of laminate inter-laminar shear strength allowable for all the plies defined in the ClaLam.

Obviously, the different data inserted in, or retrieved from the ClaLam object should be consistent with the set of units attributed to the same object. This set of units can be attributed to the object after initialization of the data.

II.4.6 Laminate properties

The method ``ClaLam.calcLaminatePropertiescalcLaminateProperties'' calculates the laminate properties
of the ClaLam object. This means that the stiffness and compliance
matrices, the thermal-expansion vectors are estimated and stored into
the laminate object. This method can be called only after all the
plies of the laminate have been inserted into the object. The method
has one argument: a ClaDb object in which all the materials used
in the lay-up definition *have to* be stored (otherwise, an exception
is raised). Note that when a ClaLam object is inserted into a
ClaDb, the ``ClaLam.calcLaminatePropertiescalcLaminateProperties'' method is called
automatically, with this ClaDb object as argument.

Six methods allow to retrieve the properties of a laminate:

- ``ClaLam.get_ABBDget_ABBD'' returns the
ABBD stiffness matrix. More
precisely, the object returned by this method is an Array of 6 elements.
Each element corresponds to one line of the matrix and is an Array of 6
Real objects.
- ``ClaLam.get_Gget_G'' returns the
out-of-plane shear stiffness
matrix. More precisely, the object returned by this method is an Array of
2 elements. Each element corresponds to one line of the matrix and is an
Array of 2 Real objects.
- ``ClaLam.get_alfaEh1get_alfaEh1'', ``ClaLam.get_alfaEh2get_alfaEh2'' and` `get_alfaEh3'' return
3-components vectors
,
and
as defined by equations (II.1.67),
(II.1.68) and
(II.1.69) respectively.
- ``ClaLam.get_alfaGh1get_alfaGh1'' and ``ClaLam.get_alfaGh2get_alfaGh2'' return 2-components vectors
and
as defined by equations (II.1.76) and
(II.1.77) respectively.
- ``ClaLam.get_betaEh1get_betaEh1'', ``ClaLam.get_betaEh2get_betaEh2'' and ``ClaLam.get_betaEh3get_betaEh3'' return
3-components vectors
,
and
as defined by equations (II.1.82),
(II.1.83) and
(II.1.84) respectively.
- ``ClaLam.get_betaGh1get_betaGh1'' and ``ClaLam.get_betaGh2get_betaGh2'' return 2-components vectors
and
as defined by equations (II.1.91) and
(II.1.92) respectively.
- ``ClaLam.get_abbd_complMatget_abbd_complMat'' returns the
abbd compliance matrix.
(Format similar as ``ClaLam.get_ABBDget_ABBD''.)
- ``ClaLam.get_g_complMatget_g_complMat'' returns the
out-of-plane shear compliance
matrix. More precisely, the object returned by this method is an Array of
2 elements. Each element corresponds to one line of the matrix and is an
Array of 2 Real objects.
- ``ClaLam.get_alfae0get_alfae0'', ``ClaLam.get_alfae1get_alfae1'', ``ClaLam.get_alfak0get_alfak0'' and
``ClaLam.get_alfak1get_alfak1'' return 3-components Array containing the components of
laminate CTE vectors
,
,
and
as defined by expressions
(II.1.71), (II.1.72),
(II.1.73) and
(II.1.74).
- ``ClaLam.get_alfas0get_alfas0'' and ``ClaLam.get_alfas1get_alfas1'' return 2-components Arrays
containing the components of laminate CTE vectors
and
defined by
expressions (II.1.79)
and (II.1.80).
- ``ClaLam.get_betae0get_betae0'', ``ClaLam.get_betae1get_betae1'', ``ClaLam.get_betak0get_betak0'' and
``ClaLam.get_betak1get_betak1'' return 3-components Array containing the components of
laminate CTE vectors
,
,
and
as defined by expressions
(II.1.86), (II.1.87),
(II.1.88) and
(II.1.89).
- ``ClaLam.get_betas0get_betas0'' and ``ClaLam.get_betas1get_betas1'' return 2-components Arrays
containing the components of laminate CTE vectors
and
defined by
expressions (II.1.94)
and (II.1.95).
- ``ClaLam.get_engineeringget_engineering'' returns a Hash containing equivalent
engineering constants of the laminate. More precisely in-plane moduli and
Poisson coefficients are returned for in-plane loading, in-plane with
curvature constrained to zero, and pure flexion of the laminate. Each
element of the Hash is a pair String-Real. The different values of the
Strings are: "E_xx", "E_yy", "G_xy", "nu_xy", "nu_yx", "E_k0_xx",
"E_k0_yy", "G_k0_xy", "nu_k0_xy", "nu_k0_yx", "E_f_xx",
"E_f_yy", "G_f_xy", "nu_f_xy", "nu_f_yx", "G_xz", "G_yz".
- ``ClaLam.get_LambdaTget_LambdaT'' returns the
in-plane thermal
conductance matrix
.
- ``ClaLam.get_LambdaHget_LambdaH'' returns the in-plane moisture conductance matrix .

Four methods return Real scalar values:

- ``ClaLam.get_thicknessget_thickness'' returns the total thickness of the laminate .
- ``ClaLam.get_surfacicMassget_surfacicMass'' returns the surfacic mass of the laminate .
- ``ClaLam.get_averageDensityget_averageDensity'' returns the average density of the laminate .
- ``ClaLam.get_R33Tget_R33T'' returns the out-of-plane thermal conductance of the laminate .
- ``ClaLam.get_RhoCpHget_RhoCpH'' returns the out-of-plane thermal surfacic capacity of the laminate .
- ``ClaLam.get_R33Hget_R33H'' returns the out-of-plane moisture conductance of the laminate .

The different calculated results from the ClaLam object are expressed in the units system associated with the object.

II.4.7 Laminate load response

The calculation of the laminate response to a specified loading is always done in two steps:

- The laminate load response is calculated for a specific
loading. This calculation is used to estimate laminate in-plane
forces, bending moments, average strains, curvature,
temperature variations... Also layered results are calculated if
required. (See description of method ``ClaLam.calcResponsecalcResponse'' in
section II.4.7.1.)
All these results are stored in the ClaLam object and remembered until the next calculation is performed.

- Then, the laminate can be ``interrogated'' to obtain a restitution of stored results, or the calculation of new results from the information stored since the last calculation. (See the methods described in sections II.4.7.2, II.4.7.3 and II.4.7.5.

The different calculated results retrieved from the ClaLam object are expressed in the units system associated with the object.

II.4.7.1 Calculation of the load response

The method ``ClaLam.calcResponsecalcResponse'' is used to calculate the laminate response to a specified loading. When this method is called, several results are systematically calculated and stored: in-plane forces, bending moments, average strains, curvature and temperature variation. The calculation and storage of ply results is optional and commanded by the Boolean arguments of the method.

The ``ClaLam.calcResponsecalcResponse'' may have from 3 up to 6 arguments:

- A ClaDb object. This object is necessary, because information about the material properties of the different plies may be necessary to perform the calculation.
- A real value corresponding to the orientation of loading wrt laminate axes. The angle is given in degrees.
- A ClaLoad object containing the loading definition. (See Chapter II.5 for the description of loads.)
- A logical parameter specifying whether the stresses and strains are to be calculated at the bottom of each laminate ply.
- A logical parameter specifying whether the stresses and strains are to be calculated at mid thickness of each laminate ply.
- A logical parameter specifying whether the stresses and strains are to be calculated at the top of each laminate ply.

`false`

(no calculation of the corresponding layered results).

II.4.7.2 Laminate internal loads and strains

Several methods allow to recover results calculated at laminate level. All these results correspond to the laminate results for the last call to method ``ClaLam.calcResponsecalcResponse'':

- ``ClaLam.isThermalLoadingDefinedisThermalLoadingDefined'' returns a logical that specifies whether the last load response calculation has been calculated with a thermo-elastic contribution.
- ``ClaLam.getDeltaTgetDeltaT'' returns a Real values corresponding to the difference between the load average temperature and the reference temperature of the laminate.
- ``ClaLam.getT0getT0'' returns a Real values corresponding to the average temperature used in the last load response.
- ``ClaLam.getGradTgetGradT'' returns a Real values corresponding to the temperature out-of-plane gradient used in the last load response.
- ``ClaLam.isMoistureLoadingDefinedisMoistureLoadingDefined'' returns a logical that specifies whether the last load response calculation has been calculated with a hygro-elastic contribution.
- ``ClaLam.getDeltaHgetDeltaH'' returns a Real values corresponding to the difference between the load average moisture and the reference moisture of the laminate.
- ``ClaLam.getH0getH0'' returns a Real values corresponding to the average moisture used in the last load response.
- ``ClaLam.getGradHgetGradH'' returns a Real values corresponding to the moisture out-of-plane gradient used in the last load response.
- ``ClaLam.isMechanicaLoadingDefinedisMechanicaLoadingDefined'' returns a logical that specifies whether the laminate contain a load response. (When a laminate load response is calculated, a mechanical contribution to the loading is mandatory.)
- ``ClaLam.getNormalForcesgetNormalForces'' returns the in-plane normal forces in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getMomentsgetMoments'' returns the bending moments in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getShearForcesgetShearForces'' returns the out-of-plane shear forces in an Array of two Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getNormalStrainsgetNormalStrains'' returns the in-plane average strains in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getCurvaturesgetCurvatures'' returns the curvature tensor in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getShearStrainsgetShearStrains'' returns the average out-of-plane shear strains in an Array of two Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getAverageInPlaneStressesgetAverageInPlaneStresses'' returns the average in-plane stress tensor components in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getFlexuralStressesgetFlexuralStresses'' returns the top surface stress tensor components corresponding to bending moment assuming homogenous material. The components are returned in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getAverageShearStressesgetAverageShearStresses'' returns the average out-of-plane shear stress tensor components in an Array of two Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getAverageInPlaneStrainsgetAverageInPlaneStrains'' returns the in-plane average strain tensor components in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getFlexuralStrainsgetFlexuralStrains'' returns the top surface strain tensor components corresponding to bending moment. The components are returned in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.
- ``ClaLam.getAverageShearStrainsgetAverageShearStrains'' returns the out-of-plane shear components of average strain tensor in an Array of three Real values. This method has one optional argument corresponding to a rotation wrt laminate axes.

II.4.7.3 Ply stresses and strains

Three methods give access to the ply results stored in ClaLam object:

- ``ClaLam.getPliesStrainsgetPliesStrains'' returns the components of the strain tensor stored in the layered results of the laminate.
- ``ClaLam.getPliesStressesgetPliesStresses'' returns the components of the stress tensor stored in the layered results of the laminate.
- ``ClaLam.getPliesMechanicalStrainsgetPliesMechanicalStrains'' returns the components of the Mechanical Strain Tensor stored in the layered results of the laminate according to (II.1.31). This tensor corresponds to the ``Mechanical Strain Tensor'' presented in Tables IX.C.3 and III.2.4.

- Have an arbitrary number of arguments. Each argument corresponds to an identifier of the layer and location at which the layered components are recovered. The identifier is given as an Array of two elements: the ply local integer index and an String that can have "Inf", "Mid" or "Sup" value. Among these layers, only those for which layered components have been previously calculated and stored are returned by the method. If the call is done without argument, all the layered results stored in the laminate are returned.
- They return components expressed in the ply coordinate system.
- The components are calculated assuming that .
- The components are returned by the method only if their calculation and storage has been required in the last call to ``ClaLam.calcResponsecalcResponse''. (See section II.4.7.1.)

- The two first elements identify the layer: they correspond to the integer index of the ply between 0 and , and the String location in the ply ("Inf", "Mid" or "Sup"). (Note that this does not correspond to the ply identifier. The integer index corresponds to the position of the ply in laminate lay-up.)
- The next 6 real elements contain the components of the result in the following order: 11, 22, 33, 23, 13, 12.

- ``ClaLam.getPliesStrainsWrtLamAxesgetPliesStrainsWrtLamAxes'',
- ``ClaLam.getPliesStressesWrtLamAxesgetPliesStressesWrtLamAxes'',
- ``ClaLam.getPliesMechanicalStrainsWrtLamAxesgetPliesMechanicalStrainsWrtLamAxes''.

II.4.7.4 Temperatures and moistures at ply level

Four methods give access to the temperature and moisture ply results stored in ClaLam object:

- ``ClaLam.getPliesTgetPliesT'' returns the temperature in plies.
- ``ClaLam.getPliesDeltaTgetPliesDeltaT'' returns the variation of temperature in plies.
- ``ClaLam.getPliesHgetPliesH'' returns the moisture in plies.
- ``ClaLam.getPliesDeltaHgetPliesDeltaH'' returns the variation of moisture in plies.

- The two first elements identify the layer: they correspond to the integer index of the ply between 0 and , and the String location in the ply ("Inf", "Mid" or "Sup").
- The third element is a Real value containing the corresponding returned value.

II.4.7.5 Other ply results

Several methods of the ClaLam class allow to estimate values from the stored ply stresses and strains. Three such methods return the values calculated for several plies:

- ``ClaLam.getDerivedgetDerived'' returns an equivalent stress or strain corresponding to the components stored in the laminate. For example, a Tresca or Von Mises equivalent stress.
- ``ClaLam.getFailureIndicesgetFailureIndices'' is devoted to the calculation of failure indices like the Tsai-Hill or Tsai-Wu. This method differs from the previous one by the fact that failure indices are calculated from the stored results and corresponding allowables.
- ``ClaLam.getReserveFactorsgetReserveFactors'' calculates reserve factors.
- ``ClaLam.getStrengthRatiosgetStrengthRatios'' calculates strength ratios.

- A ClaDb object that provides the definition of materials used in the laminate, and of the corresponding allowables. If this first parameter is omitted, then the allowables stored in ClaLam object are used instead of material allowables.
- An Array of Strings containing a list of criteria for the calculations.
- Then follows an arbitrary number of arguments. Each argument corresponds to an identifier of the layer and location at which the layered components are recovered. (Same principle as methods returning plies strains and strains in section II.4.7.3.) If none of these arguments identifier is provided, the calculation is done for all layers.

criteria=["TsaiHill2D","MaxStress2D"] ... fiRes=getFailureIndices(criteria) ... fiRes=getFailureIndices(db,criteria) ... fiRes=getFailureIndices(db,criteria,[4,"Sup"],[7,"Inf"])Note that several criteria can be calculated by a single call.

Methods ``ClaLam.getReserveFactorsgetReserveFactors'' and ``ClaLam.getStrengthRatiosgetStrengthRatios'' have one additional parameter: the factor of safety. This parameters is a Real value provided after the list of criteria and before the optional layer identifiers. For example

criteria=["TsaiHill2D","MaxStress2D"] ... rfRes=getReserveFactors(db,criteria,1.25,[4,"Sup"],[7,"Inf"])Each of the four methods described above returns an Array containing two elements:

- The first element is an Array of Strings containing the list of criteria that have been calculated. Indeed, the criteria are calculated only if the criterion is available. This Array has X elements.
- The second element contains the new layered results. Each
element of this Array contains 2+X elements:
- The two first elements of the sub-array identify the layer to which the calculated results correspond.
- The X elements 3 to 2+X of the sub-array contain the Real calculated values. These X elements correspond to the X Strings referred to above in the list of criteria returned by the method.

- The calculated criterion (String).
- Two elements identifying the critical layer (an integer and string value).
- A Real object corresponding to the critical value.

II.4.8 Laminate finite element load response

II.4.8.1 Calculation of laminate loads, stresses and strains

The ``ClaLam.calcFiniteElementResponsecalcFiniteElementResponse'' method allows the calculation of finite element load response. More precisely the method calculates several Result objects containing finite laminate finite element results, from loading of which some components are finite element results. The method has up to nine arguments:

- The first argument is a ``ClaDb'' object in which the materials used in the laminate definition are stored.
- The second argument, ``theta'', is a real value corresponding to the angle in degrees of loading wrt laminate axes. In most cases, this angle will be zero. Note that the same angle is used to calculate laminate load response for all elements and nodes on which it is required.
- The third argument is a ClaLoad object in which the loading is defined. This ClaLoad object must have some components defined as finite element results.
- The fourth argument is an Array of three logical values. Each logical value corresponds to the request of results at bottom, mid and top location respectively, in each ply. (The components are similar to three of the arguments of ``ClaLam.calcResponsecalcResponse'' method described in section II.4.7.1.)
- The fifth parameter is an Array of Strings specifying the non-layered laminate results that will be returned by the method.
- The sixth parameter is an Array of Strings specifying the layered laminate results that will be returned by the method. (Results at ply level.)
- The seventh parameter is a Real object corresponding to the safety factor. This parameter is used by the method only for the calculation of reserve factors, or strength ratios. (See the following argument.)
- The eighth parameter is an Array of Arrays describing the
failure indices, reserve factors or equivalent scalar derived values
requirements. Each element of the first Array is an Array of up to
five elements:
- A String corresponding to the key by which the corresponding result shall be referred in the Hash returned by ``DataBase.calcFiniteElementResponsecalcFiniteElementResponse'' method.
- A String corresponding to the name of the criterion. This name must one of the names defined in Table II.1.2.
- A string defining the type of Result that shall be defined. Values can be ``FI'', ``RF'', ``SR'' or ``EQ''. They correspond to the calculation of Failure Indices, Reserve Factors, Strength Ratios or Scalar Derived values respectively. If a Reserve Factor or Strength Ratio is required, the factor of safety parameter is used for the calculation.
- A logical value specifying whether the laminate allowables are used for the calculation of Result values. If this value is false, then the ply material allowables are used in the calculations.
- A logical value specifying if Result values are required for all the plies. If the argument is ``false'', the critical layer value only is inserted in the returned Result.

- An Array containing the list of plies on which stresses, strains or scalar failure indices are to be calculated. (For example, an Array of integers corresponding to ply idfiers.)

- FeResPost first calculates a list of all the entities (elements, or elements and their corner nodes) for which mechanical, thermo-elastic or hygro-elastic loading components are defined in the ClaLoad object. FeResPost calculates a load response and corresponding finite element Results for all these finite element entities.
- When mechanical loading components are defined as finite element Results, it is the responsibility of the user to first transform the components in such a way that their use by FeResPost makes sense. This means that the Results must be expressed in the appropriate coordinate system. (See also section II.5.6.)
- When mechanical loading components are defined as finite element Results, and when for some components, and if some of the finite element entities (elements or nodes) are not present in all the corresponding finite element Result stored in the ClaLoad object, FeResPost assumes the corresponding components to be zero for the loading of the entity.
- When thermo-elastic or hygro-elastic components are defined as
finite element Results:
- Values on upper and lower faces correspond to the finite element temperatures found at layers Z1 and Z2 respectively.
- If values at Z1 and/or Z2 are not found, and a value is found at layer Z0 or NONE, this value is used instead. Note that when both Z0 and NONE layers are found in the layers, Z0 layer value supersedes the NONE layer value.
- If either of the two values at Z1 or Z2 is not found by either of the two methods listed above, then the thermo-elastic or hygro-elastic contribution is not considered for laminate response analysis of the current FEM entity.

- Non-layered vectorial or tensorial Results are calculated in laminate axes. Layered vectorial and tensorial Results are calculated in ply axes. Scalar Results are not associated to a coordinate system.
- The ``Ilss'' and ``Ilss_b'' scalar results are always calculated at bottom layer of each ply, even if no explicit request of output to bottom sub-layer has been done.

II.4.8.2 Acceleration

One explains in section II.1.9.2 how the plies stresses and strains calculation can be significantly accelerated by calculating once and for all intermediate acceleration matrices for each ply. These matrices must be recalculated each time the laminate or one of its materials is modified.

Method ``ClaLam.reInitAllPliesAccelMatricesreInitAllPliesAccelMatrices'' has been added to the ``ClaLam'' class to re-initialize the laminate plies acceleration matrices. This ensures that the matrices will be re-calculated next time they are required.

Note that the same method with exactly the same arguments has been defined in the DataBase class. (See section I.1.5.)

An example of use of the method follows:

criteria = [] criteria << ["TS FI","TsaiHill2D","FI",true,true] criteria << ["TW FI","TsaiWu2D","FI",true,true] criteria << ["TW FI Critical","TsaiWu2D","FI",true,false] criteria << ["ILSS FI Critical","Ilss","FI",true,false] theta=0.0 outputs=lam.calcFiniteElementResponse(compDb,theta,ld,[true,true,true], ["Shell Forces","Shell Moments", "Shell Curvatures", "Average Strain Tensor"], ["Stress Tensor","Strain Tensor","Mechanical Strain Tensor", "Ply Temperature Variation"], 1.5,criteria)

Requirement | Finite Element Result |

``Stress Tensor'' | ``Stress Tensor'' |

``Strain Tensor'' | ``Strain Tensor'' |

``Mechanical Strain Tensor'' | ``Mechanical Strain Tensor'' |

``Ply Temperature'' | ``Ply Temperature'' |

``Ply Temperature Variation'' | ``Ply Temperature Variation'' |

``Ply Moisture'' | ``Ply Moisture'' |

``Ply Moisture Variation'' | ``Ply Moisture Variation'' |

The different calculated results from the ClaLam object are expressed in the units system associated with the object.

II.4.9 Calculation of criteria from FE stresses or strains

The ``DataBase.calcFiniteElementCriteriacalcFiniteElementCriteria'' method allows the calculation of ply failure criteria, reserve factors or equivalent stress or strain from layered Results. The method has four arguments:

- ``ClaDB'' a ClaDb object from which ply allowables and needed for the calculations are retrieved.
- ``InRes'' a tensorial Result object corresponding to ``Stress Tensor'', ``Strain Tensor'' or ``Mechanical Strain Tensor'' the components of which are used to estimate the criteria. It is the responsibility of the user to provide the tensor corresponding to the requested criteria.
- ``FoS'' a Real object corresponding to the factor of safety.
- ``FiRfResReq'' the requested criteria outputs. (See the description of method ``DataBase.calcFiniteElementResponsecalcFiniteElementResponse'' for a detailed description of the argument.)

The different calculated results from the ClaLam object are expressed in the units system associated with the object.

II.4.10 Management of Units

The ``ClaLam'' class defines three methods for the management of units:

- ``ClaLam.getUnitsgetUnits'' returns a Hash containing the definition of units associated to the laminate.
- ``ClaLam.setUnitssetUnits'' has a Hash argument and sets the units associated to the laminate.
- ``ClaLam.changeUnitschangeUnits'' has a Hash argument and changes the units associated to the laminate.

II.4.11 Saving or initializing with NDF lines

Two methods allow to save or read ClaLam objects from an Array of Strings in neutral format. These two methods are ``ClaLam.initWithNeutralLinesinitWithNeutralLines'' and ``ClaLam.getNeutralLinesgetNeutralLines'' that work in a similar way as the corresponding methods in ``ClaDb'' class (section II.2.6).

However, the lines transmitted to ``ClaLam.initWithNeutralLinesinitWithNeutralLines'' or returned by ``ClaLam.getNeutralLinesgetNeutralLines'' correspond to a single ClaLam object definition.

II.4.12 One iterator

The ClaLam class provides the iterator ``ClaLam.each_plyeach_ply'' that iterates on the plies. This iterator returns pairs of elements corresponding to the ply index, and the ply definition. The ply definition is an Array of 5 elements identical to the one returned by ``ClaLam.getPlyDatagetPlyData'' method.

II.4.13 Other methods

``ClaLam.cloneclone'' method has no argument and returns a copy of the ClaLam object.