5. DEĞERLENDİRME
5.2. Plan ve Mimari Özellikler
O pacote MaterialMedia cont´em interfaces e classes necess´arias para represen- tar da forma mais geral poss´ıvel a constitui¸c˜ao f´ısica dos elementos finitos.
A interface Material (Figura 5.12) possui os m´etodos necess´arios para obter informa¸c˜oes sobre as propriedades dos diferentes materiais, sejam elas propriedades secantes, tangentes ou de descarregamento. Os diferentes materiais s˜ao representa- dos pelas classes que implementam a interface Material, e que tˆem como atributos seu label e uma cole¸c˜ao do tipo HashMap com os valores necess´arios para caracterizar aquele material. A figura 5.12 mostra o diagrama de classe da interface Material e algumas de suas sub-classes implementadas para diversos tipos de materiais.
Existe, ainda, a classe MaterialPoint (Figura 5.13) que tem o papel de repre- sentar um ponto no meio material e que tem como propriedades um label, um objeto IPoint3d, que o representa como um ponto no espa¸co, um objeto IVolume, que representa sua propriedade geom´etrica, um objeto Material, um objeto Analysis- Modele um objeto ConstitutiveModel. Possui ainda duas cole¸c˜oes do tipo HashMap que armazenam dois tipos de vari´aveis dependentes do seu modelo constitutivo: as vari´aveis constitutivas atuais e as vari´aveis constitutivas pr´evias.
82 PolarVonMises LinearMaterial LinearElasticOrthotropic ElastoPlasticMaterial BilinearPlasticIsotropic MicroplaneMaterial VonMises LinearPlasticIsotropic
ConcreteEC2 ConcreteIzzudin2002 ConcreteNB1 Ozbolt ConcreteSun1993 Steel StretchPolarLinearElasticIsotropic ConcreteCarreira LinearElasticIsotropic Concrete PolarLinearElasticIsotropic Leukart MicromorphicMaterial Anisotropic
br.ufmg.dees.insane.materialMedia.materialPoint
pkg
+ getPreviousVariables() : HashMap<Object,Object> + getConstitutiveVariables() : HashMap<Object,Object> + getDualInternalVariables(v : IVector) : IVector + clone() : Object + update() : void + init() : void - label : String MaterialPoint + getNormal() : IVector + clone() : Object + init() : void MicroplaneMaterialPoint - material 1 - cm 1 - point 1 - previousVariables 1 - constitutiveVariables 1 - volume 1 - continuousPointModel 1 ContinuousPointModel IVolume HashMap<Object,Object> IPoint3d ConstitutiveModel Material <<interface>> Cloneable HashMap<Object,Object>
Figura 5.13: Diagrama de classe para MaterialPoint.
Estas duas cole¸c˜oes s˜ao capazes de informar, durante a an´alise, o estado do ponto material no momento corrente e no passo anterior. Um objeto MaterialPoint im- plementa a interface java.lang.Cloneable, possuindo a propriedade de ser clonado de forma seletiva. Esta propriedade permite a c´opia de somente alguns atributos de um objeto MaterialPoint, atrav´es da implementa¸c˜ao do m´etodo clone().
A figura 5.14 mostra o diagrama de classe da interface ConstitutiveModel, res- pons´avel por montar as matrizes constitutivas e calcular as tens˜oes das degenera¸c˜oes e dos pontos materiais atrav´es de informa¸c˜oes de seus materiais e modelos de an´alise. Em sua hierarquia, est˜ao implementados alguns modelos constitutivos dispon´ıveis na literatura ou oriundos de recentes pesquisas. Um objeto do tipo Constitutive- Modelmonta tanto as matrizes constitutivas secantes e tangentes quanto o vetor de tens˜oes referentes `as vari´aveis de estado correntes. ´E importante ressaltar a impor- tˆancia da dependˆencia do modelo constitutivo quanto aos materiais e modelos de an´alise, pois sem essas informa¸c˜oes n˜ao ´e poss´ıvel obter as matrizes constitutivas.
Finalmente, a classe Degeneration (Figura 5.15) representa a degenera¸c˜ao na geometria do elemento. As degenera¸c˜oes s˜ao compostas por uma lista de pontos ma- teriais e s˜ao representadas por objetos do tipo Representation. O tipo mais simple de degenera¸c˜ao ´e a PrescribedDegeneration, em que as propriedades geom´etricas
br.ufmg.dees.insane.materialMedia.constitutiveModel
pkg br.ufmg.dees.insane.materialMedia.constitutiveModel pkg
MicroplaneConstModelLeukart
+ init(previous : HashMap<Object,Object>, cv : HashMap<Object,Object>, am : ContinuousPointModel, mat : Material) : void + init(previous : HashMap<Object,Object>, cv : HashMap<Object,Object>, am : AnalysisModel, mat : Material) : void
+ update(previous : HashMap<Object,Object>, cv : HashMap<Object,Object>) : void
+ mountDualInternalVariableVector(e : IVector, am : AnalysisModel, mat : Material, cv : HashMap<Object,Object>, previous : HashMap<Object,Object>) : IVector + mountCs(am : AnalysisModel, mat : Material, cv : HashMap<Object,Object>) : IMatrix
+ mountCt(am : AnalysisModel, mat : Material, cv : HashMap<Object,Object>) : IMatrix + mountC(am : AnalysisModel, mat : Material, cv : HashMap<Object,Object>) : IMatrix
ConstitutiveModel
VonMisesConstModel
OnePointConstModel ElastoPlasticConstModel LinearElasticConstModel MicroplaneConstModel PolarVonMisesConstModel
MicroplaneConstModelOzbolt
Figura 5.14: Diagrama de classe para ConstitutiveModel.
s˜ao prescritas pelo usu´ario.
br.ufmg.dees.insane.materialMedia.degeneration pkg br.ufmg.dees.insane.materialMedia.degeneration pkg MicroplaneDegenerationOzbolt Thickness MicroplaneDegenerationLeukart + getDegenerationValues() : HashMap<String,Double> + getGeometricProperties() : GeometricProperties + init() : void + update() : void
+ getMPDualInternalVariables(mplabel : String, mpintvar : IVector) : IVector + getMPInternalVariables(mplabel : String, dgintvar : IVector) : IVector + nonLinearInternalVariableOperatorModifier(b : IMatrix) : IMatrix
+ mountDualInternalVariableVector(v : IVector) : IVector + mountCs() : IMatrix + mountCt() : IMatrix + mountC() : IMatrix + getGeometricPoints() : ArrayList<IGeometricPoint> + getMaterial() : Material + getMaterialPoints() : ArrayList<MaterialPoint> + setRepresentation(representation : Representation) : void + getRepresentation() : Representation - label : String Degeneration - degenerationValues 1 - representation 0..1 - materialPoints * ArrayList<MaterialPoint> + update() : void + init() : void - weight : double Representation HashMap<String,Double>
Solid MicroplaneDegeneration CrossSection PrescribedDegeneration
Figura 5.15: Diagrama de classe para Degeneration.
Outro exemplo de Degeneration ´e a classe CrossSection que representa a de- genera¸c˜ao causada pela discretiza¸c˜ao em elementos finitos unidimensionais, na qual simplifica-se uma geometria tridimensional em apenas uma linha. Perdem-se as in- forma¸c˜oes sobre a se¸c˜ao transversal (as duas dimens˜oes que foram simplificadas), principalmente se ela for de geometria qualquer e composta. A classe CrossSec- tion cont´em uma lista de pontos materiais, fornecida pelo usu´ario, que descreve
de maneira aproximada a geometria e a composi¸c˜ao da se¸c˜ao, permitindo que o modelo constitutivo dessa degenera¸c˜ao seja aproximado pelo somat´orio da contri- bui¸c˜ao de cada um dos pontos. Para cada ponto de integra¸c˜ao do elemento h´a uma degenera¸c˜ao, o que permite aproximar o modelo constitutivo ao longo do elemento. Um objeto Representation, para representar uma degenera¸c˜ao, possui um mo- delo constitutivo, um modelo de an´alise e duas cole¸c˜oes do tipo HashMap que arma- zenam suas vari´aveis constitutivas atuais e pr´evias. Estes atributos dizem respeito `a degenera¸c˜ao como um todo, representando o comportamento do conjunto de pontos materiais da referida degenera¸c˜ao. A representa¸c˜ao cumpre ainda o papel de ponto de integra¸c˜ao, possuindo os atributos necess´arios `a integra¸c˜ao num´erica.
Quando solicitado por seu elemento, um objeto Degeneration monta, atrav´es de sua lista de pontos materiais e de sua representa¸c˜ao, tanto as suas matrizes constitutivas secante e tangente quanto o seu vetor de tens˜oes referente `as vari´aveis de estado correntes.