Material_HM Class
The Material_HM class represents a material model for hydro-mechanical analysis. It encapsulates the properties and behaviors of the fluid, porous media, and mechanical constitutive behavior.
Contents
Methods
- mechanicalLaw: Evaluates the mechanical constitutive law at a given integration point and returns the stress and the constitutive matrix.
- getNumberStateVar: Returns the number of state variables associated with the mechanical constitutive law.
- biotCoeff: Returns the Biot coefficient of the porous media.
- permeabilityTensor: Computes and returns the permeability tensor, accounting for the fluid viscosity.
- compressibilityCoeff: Computes and returns the compressibility coefficient of the material.
- hasPlasticStrain: Checks if the material exhibits elasto-plastic behavior.
Author
Danilo Cavalcanti
Version History
Version 1.00.
Class definition
classdef Material_HM < handle
Public attributes
properties (SetAccess = public, GetAccess = public)
fluid = Fluid();
porousMedia = PorousMedia();
mechanical = [];
end
Constructor method
methods
%------------------------------------------------------------------
function this = Material_HM(matData)
this.fluid = matData.fluid;
this.porousMedia = matData.porousMedia;
% Mechanical constitutive behavior
if strcmp('elastic',matData.porousMedia.mechanical)
this.mechanical = MechanicalLinearElastic();
end
end
end
Public methods
methods
% -----------------------------------------------------------------
% Evaluate the mechanical constitutive law
function [stress,D] = mechanicalLaw(this,ip)
[stress,D] = this.mechanical.eval(this.porousMedia,ip);
end
% -----------------------------------------------------------------
% Get the number of state variables associated with the mechanical
% constitutive law
function nstVar = getNumberStateVar(this)
nstVar = this.mechanical.nstVar;
end
% -----------------------------------------------------------------
% Returns the biot coefficient
function biot = biotCoeff(this)
biot = this.porousMedia.biot;
end
% -----------------------------------------------------------------
% Returns the permeability tensor
function kh = permeabilityTensor(this)
kh = this.porousMedia.intrinsicPermeabilityMatrix();
kh = kh / this.fluid.mu;
end
% -----------------------------------------------------------------
% Computes the compressibility coefficient
function comp = compressibilityCoeff(this)
% Get material parameters
biot = this.porousMedia.biot; % Biot's coefficient
phi = this.porousMedia.phi; % Porosity
Ks = this.porousMedia.Ks; % Solid bulk modulus
Kf = this.fluid.K; % Fluid bulk modulus
% Compute the compressibility
comp = (biot - phi)/Ks + phi/Kf;
end
% -----------------------------------------------------------------
% Checks if the material exhibits elasto-plastic behaviour
function flag = hasPlasticStrain(this)
flag = this.mechanical.isElastoPlastic();
end
end
end