89 double lambda1, lambda2, lambda3, E1, E2, E3;
90 FloatArray eVals, SethHillStrainVector, stressVector, stressM;
98 C.
jaco_(eVals, eVecs, 15);
100 lambda1 = eVals.
at(1);
101 lambda2 = eVals.
at(2);
102 lambda3 = eVals.
at(3);
104 E1 = 1. / 2. * log(lambda1);
105 E2 = 1. / 2. * log(lambda2);
106 E3 = 1. / 2. * log(lambda3);
108 E1 = 1. / ( 2. *
m ) * ( pow(lambda1,
m) - 1. );
109 E2 = 1. / ( 2. *
m ) * ( pow(lambda2,
m) - 1. );
110 E3 = 1. / ( 2. *
m ) * ( pow(lambda3,
m) - 1. );
113 SethHillStrain.
resize(3, 3);
114 for (
int i = 1; i < 4; i++ ) {
115 for (
int j = 1; j < 4; j++ ) {
116 SethHillStrain.
at(i, j) = E1 * eVecs.
at(i, 1) * eVecs.
at(j, 1) + E2 *eVecs.
at(i, 2) * eVecs.
at(j, 2) + E3 *eVecs.
at(i, 3) * eVecs.
at(j, 3);
124 stressVector.
at(4) = 2 * stressVector.
at(4);
125 stressVector.
at(5) = 2 * stressVector.
at(5);
126 stressVector.
at(6) = 2 * stressVector.
at(6);
130 stressM.
at(4) = 1. / 2. * stressM.
at(4);
131 stressM.
at(5) = 1. / 2. * stressM.
at(5);
132 stressM.
at(6) = 1. / 2. * stressM.
at(6);
141 stressVector.
at(4) = 0.5 * stressVector.
at(4);
142 stressVector.
at(5) = 0.5 * stressVector.
at(5);
143 stressVector.
at(6) = 0.5 * stressVector.
at(6);
159 answer.
at(1, 1) = eVecs.
at(1, 1) * eVecs.
at(1, 1);
160 answer.
at(1, 2) = eVecs.
at(2, 1) * eVecs.
at(2, 1);
161 answer.
at(1, 3) = eVecs.
at(3, 1) * eVecs.
at(3, 1);
162 answer.
at(1, 4) = eVecs.
at(2, 1) * eVecs.
at(3, 1);
163 answer.
at(1, 5) = eVecs.
at(1, 1) * eVecs.
at(3, 1);
164 answer.
at(1, 6) = eVecs.
at(1, 1) * eVecs.
at(2, 1);
166 answer.
at(2, 1) = eVecs.
at(1, 2) * eVecs.
at(1, 2);
167 answer.
at(2, 2) = eVecs.
at(2, 2) * eVecs.
at(2, 2);
168 answer.
at(2, 3) = eVecs.
at(3, 2) * eVecs.
at(3, 2);
169 answer.
at(2, 4) = eVecs.
at(2, 2) * eVecs.
at(3, 2);
170 answer.
at(2, 5) = eVecs.
at(1, 2) * eVecs.
at(3, 2);
171 answer.
at(2, 6) = eVecs.
at(1, 2) * eVecs.
at(2, 2);
173 answer.
at(3, 1) = eVecs.
at(1, 3) * eVecs.
at(1, 3);
174 answer.
at(3, 2) = eVecs.
at(2, 3) * eVecs.
at(2, 3);
175 answer.
at(3, 3) = eVecs.
at(3, 3) * eVecs.
at(3, 3);
176 answer.
at(3, 4) = eVecs.
at(2, 3) * eVecs.
at(3, 3);
177 answer.
at(3, 5) = eVecs.
at(1, 3) * eVecs.
at(3, 3);
178 answer.
at(3, 6) = eVecs.
at(1, 3) * eVecs.
at(2, 3);
180 answer.
at(4, 1) = 2 * eVecs.
at(1, 2) * eVecs.
at(1, 3);
181 answer.
at(4, 2) = 2 * eVecs.
at(2, 2) * eVecs.
at(2, 3);
182 answer.
at(4, 3) = 2 * eVecs.
at(3, 2) * eVecs.
at(3, 3);
183 answer.
at(4, 4) = eVecs.
at(2, 2) * eVecs.
at(3, 3) + eVecs.
at(3, 2) * eVecs.
at(2, 3);
184 answer.
at(4, 5) = eVecs.
at(1, 2) * eVecs.
at(3, 3) + eVecs.
at(3, 2) * eVecs.
at(1, 3);
185 answer.
at(4, 6) = eVecs.
at(1, 2) * eVecs.
at(2, 3) + eVecs.
at(2, 2) * eVecs.
at(1, 3);
187 answer.
at(5, 1) = 2 * eVecs.
at(1, 1) * eVecs.
at(1, 3);
188 answer.
at(5, 2) = 2 * eVecs.
at(2, 1) * eVecs.
at(2, 3);
189 answer.
at(5, 3) = 2 * eVecs.
at(3, 1) * eVecs.
at(3, 3);
190 answer.
at(5, 4) = eVecs.
at(2, 1) * eVecs.
at(3, 3) + eVecs.
at(3, 1) * eVecs.
at(2, 3);
191 answer.
at(5, 5) = eVecs.
at(1, 1) * eVecs.
at(3, 3) + eVecs.
at(3, 1) * eVecs.
at(1, 3);
192 answer.
at(5, 6) = eVecs.
at(1, 1) * eVecs.
at(2, 3) + eVecs.
at(2, 1) * eVecs.
at(1, 3);
194 answer.
at(6, 1) = 2 * eVecs.
at(1, 1) * eVecs.
at(1, 2);
195 answer.
at(6, 2) = 2 * eVecs.
at(2, 1) * eVecs.
at(2, 2);
196 answer.
at(6, 3) = 2 * eVecs.
at(3, 1) * eVecs.
at(3, 2);
197 answer.
at(6, 4) = eVecs.
at(2, 1) * eVecs.
at(3, 2) + eVecs.
at(3, 1) * eVecs.
at(2, 2);
198 answer.
at(6, 5) = eVecs.
at(1, 1) * eVecs.
at(3, 2) + eVecs.
at(3, 1) * eVecs.
at(1, 2);
199 answer.
at(6, 6) = eVecs.
at(1, 1) * eVecs.
at(2, 2) + eVecs.
at(2, 1) * eVecs.
at(1, 2);
206 double gamma12, gamma13, gamma23, gamma112, gamma221, gamma113, gamma331, gamma223, gamma332, gamma;
207 double lambda1 = eigenValues.
at(1);
208 double lambda2 = eigenValues.
at(2);
209 double lambda3 = eigenValues.
at(3);
210 double lambda1P = pow(lambda1,
m - 1);
211 double lambda2P = pow(lambda2,
m - 1);
212 double lambda3P = pow(lambda3,
m - 1);
213 if ( ( lambda1 == lambda2 ) && ( lambda2 == lambda3 ) ) {
214 gamma12 = gamma13 = gamma23 = 1. / 2. * lambda1P;
216 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
217 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
218 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
219 answer2.
at(4, 4) = 1. / 2. * ( stressM.
at(2) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda2,
m - 2);
220 answer2.
at(5, 5) = 1. / 2. * ( stressM.
at(1) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda3,
m - 2);
221 answer2.
at(6, 6) = 1. / 2. * ( stressM.
at(1) + stressM.
at(2) ) * (
m - 1 ) * pow(lambda1,
m - 2);
223 answer2.
at(1, 5) = answer2.
at(5, 1) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
224 answer2.
at(1, 6) = answer2.
at(6, 1) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
225 answer2.
at(2, 4) = answer2.
at(4, 2) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
226 answer2.
at(2, 6) = answer2.
at(6, 2) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
227 answer2.
at(3, 4) = answer2.
at(4, 3) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
228 answer2.
at(3, 5) = answer2.
at(5, 3) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
230 answer2.
at(4, 5) = answer2.
at(5, 4) = 1. / 2. * stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
231 answer2.
at(4, 6) = answer2.
at(6, 4) = 1. / 2. * stressM.
at(5) * (
m - 1 ) * pow(lambda1,
m - 2);
232 answer2.
at(5, 6) = answer2.
at(6, 5) = 1. / 2. * stressM.
at(4) * (
m - 1 ) * pow(lambda1,
m - 2);
233 }
else if ( lambda1 == lambda2 ) {
234 gamma12 = 1. / 2. * lambda1P;
235 gamma13 = ( E1 - E3 ) / ( lambda1 - lambda3 );
236 gamma23 = ( E2 - E3 ) / ( lambda2 - lambda3 );
237 gamma113 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda3 ) - 2 * ( E1 - E3 ) ) / ( ( lambda1 - lambda3 ) * ( lambda1 - lambda3 ) );
238 gamma331 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda1 ) - 2 * ( E3 - E1 ) ) / ( ( lambda3 - lambda1 ) * ( lambda3 - lambda1 ) );
241 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
242 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
243 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
245 answer2.
at(4, 4) = stressM.
at(2) * gamma113 + stressM.
at(3) * gamma331;
246 answer2.
at(5, 5) = stressM.
at(1) * gamma113 + stressM.
at(3) * gamma331;
247 answer2.
at(6, 6) = 1. / 2. * ( stressM.
at(1) + stressM.
at(2) ) * (
m - 1 ) * pow(lambda1,
m - 2);
249 answer2.
at(1, 5) = answer2.
at(5, 1) = 2. * stressM.
at(5) * gamma113;
250 answer2.
at(1, 6) = answer2.
at(6, 1) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
251 answer2.
at(2, 4) = answer2.
at(4, 2) = 2. * stressM.
at(4) * gamma113;
252 answer2.
at(2, 6) = answer2.
at(6, 2) = stressM.
at(6) * (
m - 1 ) * pow(lambda1,
m - 2);
253 answer2.
at(3, 4) = answer2.
at(4, 3) = 2. * stressM.
at(4) * gamma331;
254 answer2.
at(3, 5) = answer2.
at(5, 3) = 2. * stressM.
at(5) * gamma331;
255 answer2.
at(4, 5) = answer2.
at(5, 4) = stressM.
at(6) * gamma113;
256 answer2.
at(4, 6) = answer2.
at(6, 4) = stressM.
at(5) * gamma113;
257 answer2.
at(5, 6) = answer2.
at(6, 5) = stressM.
at(4) * gamma113;
258 }
else if ( lambda2 == lambda3 ) {
259 gamma23 = 1. / 2. * lambda2P;
260 gamma12 = ( E1 - E2 ) / ( lambda1 - lambda2 );
261 gamma13 = ( E1 - E3 ) / ( lambda1 - lambda3 );
262 gamma112 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda2 ) - 2 * ( E1 - E2 ) ) / ( ( lambda1 - lambda2 ) * ( lambda1 - lambda2 ) );
263 gamma221 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda1 ) - 2 * ( E2 - E1 ) ) / ( ( lambda2 - lambda1 ) * ( lambda2 - lambda1 ) );
265 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
266 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
267 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
269 answer2.
at(4, 4) = 1. / 2. * ( stressM.
at(2) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda2,
m - 2);
270 answer2.
at(5, 5) = stressM.
at(1) * gamma112 + stressM.
at(3) * gamma221;
271 answer2.
at(6, 6) = stressM.
at(1) * gamma112 + stressM.
at(2) * gamma221;
273 answer2.
at(1, 5) = answer2.
at(5, 1) = 2. * stressM.
at(5) * gamma112;
274 answer2.
at(1, 6) = answer2.
at(6, 1) = 2. * stressM.
at(6) * gamma112;
275 answer2.
at(2, 4) = answer2.
at(4, 2) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
276 answer2.
at(2, 6) = answer2.
at(6, 2) = 2. * stressM.
at(6) * gamma221;
277 answer2.
at(3, 4) = answer2.
at(4, 3) = stressM.
at(4) * (
m - 1 ) * pow(lambda2,
m - 2);
278 answer2.
at(3, 5) = answer2.
at(5, 3) = 2. * stressM.
at(5) * gamma221;
279 answer2.
at(4, 5) = answer2.
at(5, 4) = stressM.
at(6) * gamma221;
280 answer2.
at(4, 6) = answer2.
at(6, 4) = stressM.
at(5) * gamma221;
281 answer2.
at(5, 6) = answer2.
at(6, 5) = stressM.
at(4) * gamma221;
282 }
else if ( lambda1 == lambda3 ) {
283 gamma13 = 1. / 2. * lambda1P;
284 gamma12 = ( E1 - E2 ) / ( lambda1 - lambda2 );
285 gamma23 = ( E2 - E3 ) / ( lambda2 - lambda3 );
286 gamma223 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda3 ) - 2 * ( E2 - E3 ) ) / ( ( lambda2 - lambda3 ) * ( lambda2 - lambda3 ) );
287 gamma332 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda2 ) - 2 * ( E3 - E2 ) ) / ( ( lambda3 - lambda2 ) * ( lambda3 - lambda2 ) );
289 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
290 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
291 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
293 answer2.
at(4, 4) = stressM.
at(2) * gamma223 + stressM.
at(3) * gamma332;
294 answer2.
at(5, 5) = 1. / 2. * ( stressM.
at(1) + stressM.
at(3) ) * (
m - 1 ) * pow(lambda3,
m - 2);
295 answer2.
at(6, 6) = stressM.
at(1) * gamma332 + stressM.
at(2) * gamma223;
297 answer2.
at(1, 5) = answer2.
at(5, 1) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
298 answer2.
at(1, 6) = answer2.
at(6, 1) = 2. * stressM.
at(6) * gamma332;
299 answer2.
at(2, 4) = answer2.
at(4, 2) = 2. * stressM.
at(4) * gamma223;
300 answer2.
at(2, 6) = answer2.
at(6, 2) = 2. * stressM.
at(4) * gamma223;
301 answer2.
at(3, 4) = answer2.
at(4, 3) = 2. * stressM.
at(4) * gamma332;
302 answer2.
at(3, 5) = answer2.
at(5, 3) = stressM.
at(5) * (
m - 1 ) * pow(lambda3,
m - 2);
303 answer2.
at(4, 5) = answer2.
at(5, 4) = stressM.
at(6) * gamma332;
304 answer2.
at(4, 6) = answer2.
at(6, 4) = stressM.
at(5) * gamma332;
305 answer2.
at(5, 6) = answer2.
at(6, 5) = stressM.
at(4) * gamma332;
307 gamma12 = ( E1 - E2 ) / ( lambda1 - lambda2 );
308 gamma13 = ( E1 - E3 ) / ( lambda1 - lambda3 );
309 gamma23 = ( E2 - E3 ) / ( lambda2 - lambda3 );
311 gamma112 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda2 ) - 2 * ( E1 - E2 ) ) / ( ( lambda1 - lambda2 ) * ( lambda1 - lambda2 ) );
312 gamma221 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda1 ) - 2 * ( E2 - E1 ) ) / ( ( lambda2 - lambda1 ) * ( lambda2 - lambda1 ) );
313 gamma113 = ( pow(lambda1,
m - 1) * ( lambda1 - lambda3 ) - 2 * ( E1 - E3 ) ) / ( ( lambda1 - lambda3 ) * ( lambda1 - lambda3 ) );
314 gamma331 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda1 ) - 2 * ( E3 - E1 ) ) / ( ( lambda3 - lambda1 ) * ( lambda3 - lambda1 ) );
315 gamma223 = ( pow(lambda2,
m - 1) * ( lambda2 - lambda3 ) - 2 * ( E2 - E3 ) ) / ( ( lambda2 - lambda3 ) * ( lambda2 - lambda3 ) );
316 gamma332 = ( pow(lambda3,
m - 1) * ( lambda3 - lambda2 ) - 2 * ( E3 - E2 ) ) / ( ( lambda3 - lambda2 ) * ( lambda3 - lambda2 ) );
318 gamma = ( lambda1 * ( E2 - E3 ) + lambda2 * ( E3 - E1 ) + lambda3 * ( E1 - E2 ) ) / ( ( lambda1 - lambda2 ) * ( lambda2 - lambda3 ) * ( lambda3 - lambda1 ) );
320 answer2.
at(1, 1) = 2 * stressM.
at(1) * (
m - 1 ) * pow(lambda1,
m - 2);
321 answer2.
at(2, 2) = 2 * stressM.
at(2) * (
m - 1 ) * pow(lambda2,
m - 2);
322 answer2.
at(3, 3) = 2 * stressM.
at(3) * (
m - 1 ) * pow(lambda3,
m - 2);
324 answer2.
at(4, 4) = stressM.
at(2) * gamma223 + stressM.
at(3) * gamma332;
325 answer2.
at(5, 5) = stressM.
at(1) * gamma113 + stressM.
at(3) * gamma331;
326 answer2.
at(6, 6) = stressM.
at(1) * gamma112 + stressM.
at(2) * gamma221;
328 answer2.
at(1, 5) = answer2.
at(5, 1) = 2. * stressM.
at(5) * gamma113;
329 answer2.
at(1, 6) = answer2.
at(6, 1) = 2. * stressM.
at(6) * gamma112;
330 answer2.
at(2, 4) = answer2.
at(4, 2) = 2. * stressM.
at(4) * gamma223;
331 answer2.
at(2, 6) = answer2.
at(6, 2) = 2. * stressM.
at(6) * gamma221;
332 answer2.
at(3, 4) = answer2.
at(4, 3) = 2. * stressM.
at(4) * gamma332;
333 answer2.
at(3, 5) = answer2.
at(5, 3) = 2. * stressM.
at(5) * gamma331;
334 answer2.
at(4, 5) = answer2.
at(5, 4) = 2. * stressM.
at(6) * gamma;
335 answer2.
at(4, 6) = answer2.
at(6, 4) = 2. * stressM.
at(5) * gamma;
336 answer2.
at(5, 6) = answer2.
at(6, 5) = 2. * stressM.
at(4) * gamma;
340 answer1.
at(1, 1) = lambda1P;
341 answer1.
at(2, 2) = lambda2P;
342 answer1.
at(3, 3) = lambda3P;
343 answer1.
at(4, 4) = gamma23;
344 answer1.
at(5, 5) = gamma13;
345 answer1.
at(6, 6) = gamma12;
358 stiffness.
at(1, 4) = 2. * stiffness.
at(1, 4);
359 stiffness.
at(4, 1) = 2. * stiffness.
at(4, 1);
360 stiffness.
at(1, 5) = 2. * stiffness.
at(1, 5);
361 stiffness.
at(5, 1) = 2. * stiffness.
at(5, 1);
362 stiffness.
at(1, 6) = 2. * stiffness.
at(1, 6);
363 stiffness.
at(6, 1) = 2. * stiffness.
at(6, 1);
364 stiffness.
at(2, 4) = 2. * stiffness.
at(2, 4);
365 stiffness.
at(4, 2) = 2. * stiffness.
at(4, 2);
366 stiffness.
at(2, 5) = 2. * stiffness.
at(2, 5);
367 stiffness.
at(5, 2) = 2. * stiffness.
at(5, 2);
368 stiffness.
at(2, 6) = 2. * stiffness.
at(2, 6);
369 stiffness.
at(6, 2) = 2. * stiffness.
at(6, 2);
370 stiffness.
at(3, 4) = 2. * stiffness.
at(3, 4);
371 stiffness.
at(4, 3) = 2. * stiffness.
at(4, 3);
372 stiffness.
at(3, 5) = 2. * stiffness.
at(3, 5);
373 stiffness.
at(5, 3) = 2. * stiffness.
at(5, 3);
374 stiffness.
at(3, 6) = 2. * stiffness.
at(3, 6);
375 stiffness.
at(6, 3) = 2. * stiffness.
at(6, 3);
376 stiffness.
at(4, 4) = 4. * stiffness.
at(4, 4);
377 stiffness.
at(4, 5) = 4. * stiffness.
at(4, 5);
378 stiffness.
at(5, 4) = 4. * stiffness.
at(5, 4);
379 stiffness.
at(4, 6) = 4. * stiffness.
at(4, 6);
380 stiffness.
at(6, 4) = 4. * stiffness.
at(6, 4);
381 stiffness.
at(5, 5) = 4. * stiffness.
at(5, 5);
382 stiffness.
at(5, 6) = 4. * stiffness.
at(5, 6);
383 stiffness.
at(6, 5) = 4. * stiffness.
at(6, 5);
384 stiffness.
at(6, 6) = 4. * stiffness.
at(6, 6);
399 if ( type == IST_StressTensor ) {
402 }
else if ( type == IST_StrainTensor ) {
417 transformationMatrix(6, 6),
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void updateYourself(TimeStep *)
Update equilibrium history variables according to temp-variables.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
virtual void give3dMaterialStiffnessMatrix_dPdF(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep)
GaussPoint * gp
Associated integration point.
virtual void giveFirstPKStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &vF, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
double m
Specifies the strain tensor.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
double & at(int i)
Coefficient access function.
This class implements a structural material status information.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
const FloatMatrix & giveTLmatrix()
MatResponseMode
Describes the character of characteristic material matrix.
void beMatrixForm(const FloatArray &aArray)
bool jaco_(FloatArray &eval, FloatMatrix &v, int nf)
Computes eigenvalues and eigenvectors of receiver (must be symmetric) The receiver is preserved...
void setTLmatrix(const FloatMatrix &values)
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Material * giveMaterial(int n)
Service for accessing particular domain material model.
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
#define _IFT_LargeStrainMasterMaterial_m
double at(int i, int j) const
Coefficient access function.
#define _IFT_LargeStrainMasterMaterial_slaveMat
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
Abstract base class representing a material status information.
void setPmatrix(const FloatMatrix &values)
Class representing vector of real numbers.
void convert_dSdE_2_dPdF(FloatMatrix &answer, const FloatMatrix &dSdE, const FloatArray &S, const FloatArray &F, MaterialMode matMode)
Implementation of matrix containing floating point numbers.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
IRResultType
Type defining the return values of InputRecord reading operations.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
LargeStrainMasterMaterial(int n, Domain *d)
virtual ~LargeStrainMasterMaterialStatus()
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void add(const FloatMatrix &a)
Adds matrix to the receiver.
void beTProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
const FloatArray & giveTempFVector() const
Returns the const pointer to receiver's temporary deformation gradient vector.
virtual ~LargeStrainMasterMaterial()
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
void zero()
Zeroes all coefficient of receiver.
Domain * giveDomain() const
void beUnitMatrix()
Sets receiver to unity matrix.
REGISTER_Material(DummyMaterial)
void beSymVectorFormOfStrain(const FloatMatrix &aMatrix)
LargeStrainMasterMaterialStatus(int n, Domain *d, GaussPoint *g, int s)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
const FloatArray & giveTempStressVector() const
Returns the const pointer to receiver's temporary stress vector.
the oofem namespace is to define a context or scope in which all oofem names are defined.
void constructTransformationMatrix(FloatMatrix &answer, const FloatMatrix &eigenVectors)
transformation matrices
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
void constructL1L2TransformationMatrices(FloatMatrix &answer1, FloatMatrix &answer2, const FloatArray &eigenValues, FloatArray &stress, double E1, double E2, double E3)
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
Class representing integration point in finite element program.
int slaveMat
'slave' material model number.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
const FloatMatrix & givePmatrix()
Class representing solution step.
virtual void updateYourself(TimeStep *)
Update equilibrium history variables according to temp-variables.