FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
StressTensorValues.hpp
1
2//
3// $Id: hpp,v 1.0 2000/01/01 00:00:01 werner Exp $
4//
5// $Log: hpp,v $
6// Created 2012/01/19 17:35:06 marcel
7// Initial version
8//
9//
11#ifndef __FIBEROPERATIONS_STRESSTENSORVALUES_HPP
12#define __FIBEROPERATIONS_STRESSTENSORVALUES_HPP
13
14#include <field/MemBase.hpp>
15#include <fiberop/TensorProperties.hpp>
16#include <eagle/EigenVectors.hpp>
17#include <grid/Representation.hpp>
18#include <eagle/PhysicalSpace.hpp>
19#include "fiberopDllApi.h"
20
21namespace Fiber
22{
23
26{
27 RefPtr<TypedArray<double> > pInvariant1,
28 pInvariant2,
29 pInvariant3,
30 pPressure,
31 pMises;
32
33 StressTensorValueArrays(Representation&R, const string&Fieldname, const RefPtr<FragmentID>&f)
34 {
35 pInvariant1 = -R( Fieldname + "." FIBER_TENSORFIELDNAME_STRESSINVARIANT1 , f );
36 pInvariant2 = -R( Fieldname + "." FIBER_TENSORFIELDNAME_STRESSINVARIANT2 , f );
37 pInvariant3 = -R( Fieldname + "." FIBER_TENSORFIELDNAME_STRESSINVARIANT3 , f );
38 pPressure = -R( Fieldname + "." FIBER_TENSORFIELDNAME_PRESSURE , f );
39 pMises = -R( Fieldname + "." FIBER_TENSORFIELDNAME_MISES , f );
40 }
41
42
46 bool hasData() const;
47};
48
49
51{
53 TheTensorField,
54
58 Pressure,
59 Mises;
60
61 StressTensorFields(Representation&R, const string&Fieldname)
62 {
63 TheTensorField = R(Fieldname);
64
65 Invariant1 = R( Fieldname + "." FIBER_TENSORFIELDNAME_STRESSINVARIANT1);
66 Invariant2 = R( Fieldname + "." FIBER_TENSORFIELDNAME_STRESSINVARIANT2);
67 Invariant3 = R( Fieldname + "." FIBER_TENSORFIELDNAME_STRESSINVARIANT3);
68 Pressure = R( Fieldname + "." FIBER_TENSORFIELDNAME_PRESSURE);
69 Mises = R( Fieldname + "." FIBER_TENSORFIELDNAME_MISES);
70
71
72 }
73
74 MemCore::Ageable YoungestStressTensorField() const
75 {
78
79 if( Invariant1 ) result.update(*Invariant1);
80 if( Invariant2 ) result.update(*Invariant2);
81 if( Invariant3 ) result.update(*Invariant3);
82 if( Pressure ) result.update(*Pressure);
83 if( Mises ) result.update(*Mises);
84
85 return result;
86 }
87
88 bool NeedComputation() const
89 {
90 if (!TheTensorField) return false;
91
92 return TheTensorField->isNewerThan( YoungestStressTensorField() );
93 }
94};
95
98{
99 typedef Eagle::tvector3 vec3;
100
102 string problem;
103
104// RefPtr<TypedArray<vec3> > pMajorEvec, pMedianEvec, pMinorEvec;
105
109 StressTensorArrays(Representation&R, const string&Fieldname, const RefPtr<FragmentID>&f);
110
114 StressTensorArrays(Representation&R, const RefPtr<CreativeArrayBase>&TensorField, const string&Fieldname, const RefPtr<FragmentID>&f,
115 bool TemporaryFields = false, bool Discardable = true);
116
121 void create(const RefPtr<MemBase>&Data);
122
126 void setFields(Representation&R, const string&Fieldname, const RefPtr<FragmentID>&f,
128 bool Discardable = true);
129
130
134 bool HasStressTensorFields() const;
135
136 operator bool() const
137 {
138 return HasStressTensorFields();
139 }
140};
141
142
145{
147
149 : Invariant1 ( *SV.pInvariant1->creativeIterator() )
150 , Invariant2 ( *SV.pInvariant2->creativeIterator() )
151 , Invariant3 ( *SV.pInvariant3->creativeIterator() )
152 , Pressure ( *SV.pPressure->creativeIterator() )
153 , Mises ( *SV.pMises->creativeIterator() )
154 {}
155
156void compute(const Iterator<Eagle::metric33>&M, double precision = 1E-8);
157};
158
159} // namespace fiber
160
161#endif
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
A Representation is a set of Field objects, each of them accessed via some FieldID identifier.
Definition Representation.hpp:101
static constexpr const Ageable & InfinitelyOld() noexcept
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
Definition FEMFields.hpp:73
Definition FEMFields.hpp:89
Definition FEMFields.hpp:105
Definition FEMFields.hpp:121
Contains typed arrays to StressTensorValues.
Definition StressTensorValues.hpp:98
string problem
A description of the problem, if there is any.
Definition StressTensorValues.hpp:102
Definition StressTensorValues.hpp:51
Contains typed arrays for stress tensor realted values.
Definition StressTensorValues.hpp:26
Contains iterators to eigenvalues.
Definition StressTensorValues.hpp:145