where \(\boldsymbol{\mathsf{T}}^{(I)(K)}\) is the cluster
interaction tensor (fourth-order tensor) between the \(I\) th and
\(K\) th material clusters,
\(\boldsymbol{\mathsf{D}}^{(K)}_{n+1}\) is the consistent tangent
modulus of the \(K\) th material cluster,
\(\boldsymbol{\mathsf{D}}^{e,\, 0}\) is the elastic tangent
modulus of the reference homogeneous material, \(n_{c}\) is the
number of material clusters. and \(n+1\) denotes the current
increment.
where \(\boldsymbol{\mathsf{T}}^{(I)(K)}\) is the cluster
interaction tensor (fourth-order tensor) between the \(I\) th and
\(K\) th material clusters,
\(\boldsymbol{\mathsf{A}}^{(K)}_{n+1}\) is the material
consistent tangent modulus of the \(K\) th material cluster,
\(\boldsymbol{\mathsf{A}}^{e,\, 0}\) is the elastic tangent
modulus of the reference homogeneous material, \(n_{c}\) is the
number of material clusters. and \(n+1\) denotes the current
increment.
global_cit_mf (numpy.ndarray (2d)) – Global cluster interaction matrix. Assembly positions are assigned
according to the order of material_phases (1st) and phase_clusters
(2nd).
material_state (MaterialState) – CRVE material constitutive state.
global_cit_diff_tangent_mf – Global matrix similar to the global cluster interaction matrix but
where each cluster interaction tensor is double contracted with the
difference between the associated material cluster consistent
tangent modulus and the reference material elastic tangent modulus.
where \(\boldsymbol{R}_{n+1}\) is the global residual function
(assuming incremental equilibrium formulation and incremental
primary unknowns), \(\boldsymbol{R}^{(I)}_{n+1}\) is the
\(I\) th material cluster equilibrium residual function,
\(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the strain
and/or stress loading constraints residual function,
\(\Delta \boldsymbol{\varepsilon}_{\mu,\,n+1}^{(K)}\) is
the \(K\) th material cluster incremental infinitesimal strain
tensor,
\(\Delta \boldsymbol{\varepsilon}_{\mu,\,n+1}^{0}\) is the
incremental far-field infinitesimal strain tensor, \(n_{c}\) is
the number of material clusters, and \(n+1\) denotes the
current increment.
where \(\delta_{(I)(K)}\) is the Kronecker delta,
\(\boldsymbol{\mathsf{I}}\) is the fourth-order identity
tensor, \(\boldsymbol{\mathsf{T}}^{(I)(K)}\) is the cluster
interaction tensor (fourth-order tensor) between the \(I\) th
and \(K\) th material clusters,
\(\boldsymbol{\mathsf{D}}^{(K)}_{n+1}\) is the consistent
tangent modulus of the \(K\) th material cluster,
\(\boldsymbol{\mathsf{D}}^{e,\, 0}\) is the elastic tangent
modulus of the reference homogeneous material, \(f^{(K)}\) is
the volume fraction of the \(K\) th material cluster.
Remark: The Jacobian matrix is the same when the residual
functions are derived with respect to the total strains (assuming
incremental equilibrium formulation and total primary unknowns).
where \(\boldsymbol{R}_{n+1}\) is the global residual
function, \(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th
material cluster equilibrium residual function,
\(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the strain
and/or stress loading constraints residual function,
\(\boldsymbol{F}_{\mu,\,n+1}^{(K)}\) is the \(K\) th
material cluster deformation gradient,
\(\boldsymbol{F}_{\mu,\,n+1}^{0}\) is the far-field
deformation gradient, \(n_{c}\) is the number of material
clusters, and \(n+1\) denotes the current increment.
where \(\delta_{(I)(K)}\) is the Kronecker delta,
\(\boldsymbol{\mathsf{I}}\) is the fourth-order identity
tensor, \(\boldsymbol{\mathsf{T}}^{(I)(K)}\) is the cluster
interaction tensor (fourth-order tensor) between the \(I\) th
and \(K\) th material clusters,
\(\boldsymbol{\mathsf{A}}^{(K)}_{n+1}\) is the material
consistent tangent modulus of the \(K\) th material cluster,
\(\boldsymbol{\mathsf{A}}^{e,\, 0}\) is the elastic tangent
modulus of the reference homogeneous material, \(f^{(K)}\) is
the volume fraction of the \(K\) th material cluster.
material_state (MaterialState) – CRVE material constitutive state.
global_cit_diff_tangent_mf (numpy.ndarray (2d)) – Global matrix similar to global cluster interaction matrix but
where each cluster interaction tensor is double contracted with the
difference between the associated material cluster consistent
tangent modulus and the elastic reference material tangent modulus.
where \(\boldsymbol{R}_{n+1}\) is the global residual
function, \(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th
material cluster equilibrium residual function,
\(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the strain
and/or stress loading constraints residual function,
\(n_{c}\) is the number of material clusters,
and \(n+1\) denotes the current increment.
where \(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th
material cluster equilibrium residual function,
\(\Delta \boldsymbol{\varepsilon}_{\mu,\,n+1}^{(I)}\)
is the \(I\) th material cluster incremental infinitesimal
strain tensor, \(\boldsymbol{\mathsf{T}}^{(I)(J)}\) is
the cluster interaction tensor (fourth-order tensor) between
the \(I\) th and \(J\) th material clusters,
\(\Delta \boldsymbol{\sigma}_{\mu,\,n+1}^{(J)}\) is
the \(J\) th material cluster incremental Cauchy stress
tensor (\(\hat{(\cdot)}\) denotes the incremental nature
of the constitutive function),
\(\boldsymbol{\mathsf{D}}^{e,\, 0}\) is the elastic
tangent modulus of the reference homogeneous material,
\(\Delta \boldsymbol{\varepsilon}_{\mu,\,n+1}^{0}\) is
the incremental far-field infinitesimal strain tensor,
\(n_{c}\) is the number of material clusters, and
\(n+1\) denotes the current increment.
where \(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the
strain loading constraint residual function, \(f^{(I)}\) is
the volume fraction of the \(I\) th material cluster,
\(\Delta \boldsymbol{\varepsilon}_{\mu,\,n+1}^{(I)}\)
is the \(I\) th material cluster incremental infinitesimal
strain tensor, \(\Delta \boldsymbol{\varepsilon}_{n+1}\)
is the macroscale incremental Cauchy stress tensor,
\(n_{c}\) is the number of material clusters, and
\(n+1\) denotes the current increment.
where \(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the
stress loading constraint residual function,
\(f^{(I)}\) is the volume fraction of the \(I\) th
material cluster,
\(\Delta \boldsymbol{\sigma}_{\mu,\,n+1}^{(I)}\) is
the \(I\) th material cluster incremental Cauchy stress
tensor (\(\hat{(\cdot)}\) denotes the incremental nature
of the constitutive function),
\(\Delta \boldsymbol{\sigma}_{n+1}\) is the macroscale
incremental Cauchy stress tensor, \(n_{c}\) is the number
of material clusters, and \(n+1\) denotes the current
increment.
Infinitesimal strains (incremental equilibrium formulation, total primary unknowns):
This formulation is mathematically equivalent to the incremental
formulation of the equilibrium problem. Based on the additive
nature of both infinitesimal strain and Cauchy stress tensors, this
functional format is suitable for a computational implementation
where total primary unknowns are adopted.
where \(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th
material cluster equilibrium residual function,
\(\boldsymbol{\varepsilon}_{\mu}^{(I)}\) is the
\(I\) th material cluster infinitesimal strain tensor,
\(\boldsymbol{\mathsf{T}}^{(I)(J)}\) is the cluster
interaction tensor (fourth-order tensor) between the
\(I\) th and \(J\) th material clusters,
\(\boldsymbol{\sigma}_{\mu}^{(J)}\) is the \(J\) th
material cluster Cauchy stress tensor (\(\hat{(\cdot)}\)
denotes the incremental nature of the constitutive function),
\(\boldsymbol{\mathsf{D}}^{e,\, 0}\) is the elastic
tangent modulus of the reference homogeneous material,
\(\boldsymbol{\varepsilon}_{\mu}^{0}\) is the far-field
infinitesimal strain tensor, \(n_{c}\) is the number of
material clusters, \(n+1\) denotes the current increment,
and \(n\) denotes the last converged increment.
where \(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the
strain loading constraint residual function, \(f^{(I)}\) is
the volume fraction of the \(I\) th material cluster,
\(\boldsymbol{\varepsilon}_{\mu}^{(I)}\) is the
\(I\) th material cluster infinitesimal strain tensor,
\(\boldsymbol{\varepsilon}\) is the macroscale
infinitesimal strain tensor, \(n_{c}\) is the number of
material clusters, \(n+1\) denotes the current increment,
and \(n\) denotes the last converged increment.
where \(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the
stress loading constraint residual function,
\(f^{(I)}\) is the volume fraction of the \(I\) th
material cluster, \(\boldsymbol{\sigma}_{\mu}^{(I)}\) is
the \(I\) th material cluster Cauchy stress tensor
(\(\hat{(\cdot)}\) denotes the incremental nature of the
constitutive function), \(\boldsymbol{\sigma}\) is the
macroscale incremental Cauchy stress tensor, \(n_{c}\) is
the number of material clusters, \(n+1\) denotes the
current increment, and \(n\) denotes the last converged
increment.
Finite strains (total equilibrium formulation, total primary unknowns):
where \(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th
material cluster equilibrium residual function,
\(\boldsymbol{F}_{\mu,\,n+1}^{(I)}\) is the \(I\) th
material cluster deformation gradient,
\(\boldsymbol{\mathsf{T}}^{(I)(J)}\) is the cluster
interaction tensor (fourth-order tensor) between the
\(I\) th and \(J\) th material clusters,
\(\boldsymbol{P}_{\mu,\,n+1}^{(J)}\) is the \(J\) th
material cluster first Piola-Kirchhoff stress tensor
(\(\hat{(\cdot)}\) denotes the incremental nature of the
constitutive function),
\(\boldsymbol{\mathsf{A}}^{e,\, 0}\) is the elastic
tangent modulus of the reference homogeneous material,
\(\boldsymbol{F}_{\mu,\,n+1}^{0}\) is the far-field
deformation gradient, \(n_{c}\) is the number of material
clusters, and \(n+1\) denotes the current increment.
where \(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the
strain loading constraint residual function,
\(f^{(I)}\) is the volume fraction of the \(I\) th
material cluster, \(\boldsymbol{F}_{\mu,\,n+1}^{(I)}\)
is the \(I\) th material cluster deformation gradient,
\(\boldsymbol{F}_{n+1}\) is the macroscale deformation
gradient, \(n_{c}\) is the number of material clusters, and
\(n+1\) denotes the current increment.
where \(\boldsymbol{R}^{(n_{\text{c}}+1)}_{n+1}\) is the
stress loading constraint residual function, \(f^{(I)}\) is
the volume fraction of the \(I\) th material cluster,
\(\boldsymbol{P}_{\mu, \,n+1}^{(I)}\) is the
\(I\) th material cluster first Piola-Kirchhoff stress
tensor (\(\hat{(\cdot)}\) denotes the incremental nature
of the constitutive function), \(\boldsymbol{P}_{n+1}\) is
the macroscale first Piola-Kirchhoff stress tensor,
\(n_{c}\) is the number of material clusters, and
\(n+1\) denotes the current increment.
applied_mac_load_mf (dict) – For each prescribed loading nature type
(key, {‘strain’, ‘stress’}), stores the current applied macroscale
loading constraints in a numpy.ndarray of shape (n_comps,).
global_cit_mf (numpy.ndarray (2d)) – Global cluster interaction matrix. Assembly positions are assigned
according to the order of material_phases (1st) and phase_clusters
(2nd).
global_strain_mf (numpy.ndarray (1d)) – Global vector of clusters strain tensors (matricial form).
inc_mac_load_mf (dict, default=None) – For each loading nature type (key, {‘strain’, ‘stress’}), stores
the incremental loading constraint matricial form in a
numpy.ndarray of shape (n_comps,).
applied_mac_load_mf (dict) – For each prescribed loading nature type
(key, {‘strain’, ‘stress’}), stores the current applied loading
constraints in a numpy.ndarray of shape (n_comps,).
where \(\overline{\boldsymbol{\mathsf{D}}}_{n+1}\) is the CRVE
homogenized consistent tangent modulus, \(f^{(I)}\) is the volume
fraction of the \(I\) th material cluster,
\(\boldsymbol{\mathsf{D}}^{(I)}_{n+1}\) is the consistent tangent
modulus of the \(I\) th material cluster,
\(\boldsymbol{\mathsf{H}}^{(I)}_{n+1}\) is the \(I\) th
material cluster strain concentration tensor,
\(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th material
cluster equilibrium residual function,
\(\Delta \boldsymbol{\varepsilon}_{\mu,\,n+1}^{(K)}\) is the
\(K\) th material cluster incremental infinitesimal strain tensor,
\(n_{c}\) is the number of material clusters, and \(n+1\)
denotes the current increment.
where \(\overline{\boldsymbol{\mathsf{A}}}_{n+1}\) is the CRVE
homogenized material consistent tangent modulus, \(f^{(I)}\) is the
volume fraction of the \(I\) th material cluster,
\(\boldsymbol{\mathsf{A}}^{(I)}_{n+1}\) is the material
consistent tangent modulus of the \(I\) th material cluster,
\(\boldsymbol{\mathsf{H}}^{(I)}_{n+1}\) is the \(I\) th
material cluster strain concentration tensor,
\(\boldsymbol{R}^{(I)}_{n+1}\) is the \(I\) th material
cluster equilibrium residual function,
\(\boldsymbol{F}_{\mu,\,n+1}^{(K)}\) is the \(K\) th
material cluster deformation gradient, \(n_{c}\) is the number of
material clusters, and \(n+1\) denotes the current increment.
material_state (MaterialState) – CRVE material constitutive state.
global_cit_diff_tangent_mf (numpy.ndarray (2d)) – Global matrix similar to global cluster interaction matrix but
where each cluster interaction tensor is double contracted with the
difference between the associated material cluster consistent
tangent modulus and the elastic reference material tangent modulus.
global_strain_mf (numpy.ndarray (1d), default=None) – Global vector of clusters strains stored in matricial form. Only
required for validation of cluster strain concentration tensors
computation.
farfield_strain_mf (numpy.ndarray (1d), default=None) – Far-field strain tensor (matricial form). Only required for
validation of cluster strain concentration tensors computation.
This validation procedure requires the homogenized strain tensor
instead of the far-field strain tensor in the SCA formulation without
the far-field strain tensor.
Parameters:
material_phases (list[str]) – RVE material phases labels (str).
phase_clusters (dict) – Clusters labels (item, list[int]) associated with each material
phase (key, str).
global_csct_mf (numpy.ndarray (2d)) – Global matrix of cluster strain concentration tensors (matricial
form).
global_strain_mf (numpy.ndarray (1d)) – Global vector of clusters strains stored in matricial form.
The overall solution procedure of the Self-consistent Clustering
Analysis (SCA) under infinitesimal strains is summarized in Boxes C.2
(Newton-Raphson iterative scheme) and C.3 (self-consistent iterative
scheme) of Ferreira (2022) [3]. The finite strain extension compatible
with multiplicative kinematics can be found in Box 4.2 (Newton-Raphson
iterative scheme) and the enrichement with clustering adaptivity
(Adaptive Self-consistent Clustering Analysis (ASCA)) is described in
Section 4.4.
material_state (MaterialState) – CRVE material constitutive state.
mac_load (dict) – For each loading nature type (key, {‘strain’, ‘stress’}), stores
the loading constraints for each loading subpath in a
numpy.ndarray (2d), where the i-th row is associated with the i-th
strain/stress component and the j-th column is associated with the
j-th loading subpath.
mac_load_presctype (numpy.ndarray (2d)) – Loading nature type ({‘strain’, ‘stress’}) associated with each
loading constraint (numpy.ndarray of shape
(n_comps, n_load_subpaths)), where the i-th row is associated with
the i-th strain/stress component and the j-th column is associated
with the j-th loading subpath.
mac_load_increm (dict) – For each loading subpath id (key, str), stores a numpy.ndarray of
shape (n_load_increments, 2) where each row is associated with a
prescribed loading increment, and the columns 0 and 1 contain the
corresponding incremental load factor and incremental time,
respectively.
output_dir (str) – Absolute directory path of output files.
problem_name (str, default='problem') – Problem name.
clust_adapt_freq (dict, default=None) – Clustering adaptivity frequency (relative to loading
incrementation) (item, int) associated with each adaptive
cluster-reduced material phase (key, str).
is_solution_rewinding (bool, default=False) – Problem solution rewinding flag.
rewind_state_criterion (tuple, default=None) – Rewind state storage criterion [0] and associated parameter [1].