Revisit viscoelastic materials

58 views
Skip to first unread message

freevryheid

unread,
Jan 29, 2012, 7:44:01 AM1/29/12
to sfepy...@googlegroups.com
No examples or tests for the dw_lin_elastic_th or dw_lin_elastic_eth terms. Attached problem fails with the following error. Any suggestions to point me in the right direction.

Andre

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/home/grassy/sfepy/simple.py in <module>()
    123
    124 if __name__ == '__main__':
--> 125     main()

/home/grassy/sfepy/simple.py in main()
    120         parametric_hook = conf.get_function(opts.parametric_hook)
    121         app.parametrize( parametric_hook )
--> 122     app()
    123
    124 if __name__ == '__main__':

/home/grassy/sfepy/sfepy/applications/application.pyc in call_basic(self, **kwargs)
     27
     28     def call_basic( self, **kwargs ):
---> 29         return self.call( **kwargs )
     30
     31     def call_parametrized( self, **kwargs ):

/home/grassy/sfepy/sfepy/applications/simple_app.pyc in call(self)
    115                             post_process_hook=self.post_process_hook,
    116                             post_process_hook_final=self.post_process_hook_final,
--> 117                             pre_process_hook=self.pre_process_hook)
    118
    119         return out

/home/grassy/sfepy/sfepy/solvers/generic.pyc in solve_direct(conf, options, problem, step_hook, post_process_hook, post_process_hook_final, pre_process_hook, nls_status)
    214                                       step_hook=step_hook,
    215                                       post_process_hook=post_process_hook,
--> 216                                       nls_status=nls_status)
    217     else:
    218         ##


/home/grassy/sfepy/sfepy/solvers/generic.pyc in solve_evolutionary_op(problem, save_results, return_history, step_hook, post_process_hook, nls_status)
    134
    135     ii = 0
--> 136     for ts, state in time_solver( state0 ):
    137
    138         if step_hook is not None:

/home/grassy/sfepy/sfepy/solvers/ts.pyc in __call__(self, state0, conf, step_fun, step_args)
    189             output( self.format % (time, step + 1, self.ts.n_step) )
    190
--> 191             state = step_fun( self.ts, state0, *step_args )
    192             state0 = state.copy(deep=True)
    193             yield self.ts, state

/home/grassy/sfepy/sfepy/solvers/generic.pyc in time_step_function(ts, state0, problem, nls_status)
     80             ev = problem.get_evaluator()
     81             try:
---> 82                 vec_r = ev.eval_residual(state(), is_full=True)
     83             except ValueError:
     84                 output('initial residual evaluation failed, giving up...')

/home/grassy/sfepy/sfepy/fem/evaluate.pyc in eval_residual(self, vec, is_full)
     50         try:
     51             pb = self.problem
---> 52             vec_r = pb.equations.eval_residuals(vec)
     53
     54         except StopIteration, exc:

/home/grassy/sfepy/sfepy/fem/equations.pyc in eval_residuals(self, state, by_blocks, names)
    560             out = self.create_stripped_state_vector()
    561
--> 562             self.evaluate(mode='weak', dw_mode='vector', asm_obj=out)
    563
    564         return out

/home/grassy/sfepy/sfepy/fem/equations.pyc in evaluate(self, mode, dw_mode, term_mode, asm_obj)
    503         for eq in self:
    504             eout = eq.evaluate(mode=mode, dw_mode=dw_mode, term_mode=term_mode,
--> 505                                asm_obj=asm_obj)
    506             if mode != 'weak':
    507                 out[eq.name] = eout

/home/grassy/sfepy/sfepy/fem/equations.pyc in evaluate(self, mode, dw_mode, term_mode, asm_obj)
    730                                                       term_mode=term_mode,
    731                                                       standalone=False,
--> 732                                                       ret_status=True)
    733                     term.assemble_to(asm_obj, val, iels, mode=dw_mode)
    734

/home/grassy/sfepy/sfepy/terms/terms.pyc in evaluate(self, mode, diff_var, standalone, ret_status, **kwargs)
   1501
   1502                 _args = tuple(args) + (mode, term_mode, diff_var)
-> 1503                 fargs = self.get_fargs(*_args, **kwargs)
   1504
   1505                 n_elr, n_qpr, dim, n_enr, n_cr = self.get_data_shape(varr)

TypeError: get_fargs() takes at most 3 arguments (8 given)

cylt_v.py
cyl.inp

Robert Cimrman

unread,
Jan 29, 2012, 8:14:48 AM1/29/12
to sfepy...@googlegroups.com
Hi Andre,

the time history terms *th were neglected during the easier_terms and cython updates. I have planned to update them next week or so as I need them working again. So wait please a few days, I will try to fix them asap.

r.
--
You received this message because you are subscribed to the Google Groups "sfepy-devel" group.
To view this discussion on the web visit https://groups.google.com/d/msg/sfepy-devel/-/eNJ3ZUbDbuYJ.
To post to this group, send email to sfepy...@googlegroups.com.
To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.

Robert Cimrman

unread,
Feb 1, 2012, 12:47:00 PM2/1/12
to sfepy...@googlegroups.com
On 01/29/2012 02:14 PM, Robert Cimrman wrote:
> Hi Andre,
>
> the time history terms *th were neglected during the easier_terms and cython
> updates. I have planned to update them next week or so as I need them
> working again. So wait please a few days, I will try to fix them asap.
>
> r.

re-hi!

Check out [1] to see how to work with the fading memory terms. It's a freshly
updated code, so there might be bugs lurking, although the example seems to
work fine. I have updated only the linear elastic terms so far, the other
fading memory terms will follow soon - it should be easy, as the
"infrastructure" is there.

Cheers,
r.

[1]
http://docs.sfepy.org/doc-devel/examples/linear_elasticity/linear_viscoelastic.html

Andre Smit

unread,
Feb 1, 2012, 1:32:19 PM2/1/12
to sfepy...@googlegroups.com

Thanks!

> --
> You received this message because you are subscribed to the Google Groups "sfepy-devel" group.

Andre Smit

unread,
Feb 17, 2012, 10:37:14 AM2/17/12
to sfepy...@googlegroups.com
The stress/strain response of these materials are non-linear with time. I suggest extending the example to show these responses with plots of stress vs. time and strain vs. time. Can the de_cauchy_strain/stress terms be used for this?

Andre  
--
Andre

Robert Cimrman

unread,
Feb 17, 2012, 10:47:07 AM2/17/12
to sfepy...@googlegroups.com
Yes, that would be nice. The strain-time plot can be readily done, but for the
stress-time we would need to add a term analogous to de_cauchy_stress for the
convolution kernel part. Create a new issue, please, on the github site.

r.

Andre Smit

unread,
Feb 17, 2012, 12:50:24 PM2/17/12
to sfepy...@googlegroups.com
Even better would be to remove the load after 10 steps, say, to see delayed stress/strain recovery.
--
Andre

Robert Cimrman

unread,
Feb 18, 2012, 11:49:27 AM2/18/12
to sfepy...@googlegroups.com
Yes, that would be nice. Did you try it? Thanks for creating the issue.

r.

----- Reply message -----
From: "Andre Smit" <freev...@gmail.com>
To: <sfepy...@googlegroups.com>
Subject: Revisit viscoelastic materials

Robert Cimrman

unread,
Feb 21, 2012, 8:52:00 AM2/21/12
to sfepy...@googlegroups.com
Hi Andre,

the new terms for evaluating fading memory stresses are implemented now, check
[1]. It was a little bit tricky for the 'eth' version of terms because to
compute stress one needs to know whole history of loading - there is no
cut-off. Therefore 'preserve_caches' argument has been introduced to
ProblemDefinition.evaluate() - it must be set to True to evaluate such terms
correctly.

I have also changed the loading according to your suggestion. To get the time
history plots, follow the instructions at [1] (or in the example docstring).

r.

[1] http://sfepy.org//doc-devel/examples/linear_elasticity/linear_viscoelastic.html

Andre Smit

unread,
Feb 21, 2012, 9:41:11 AM2/21/12
to sfepy...@googlegroups.com
Brilliant!

I'm closing issues #172 and #114. When I get some time I'll work in a tutorial on these terms. A comparison with Abaqus that uses Prony series for viscoelastic definition may be interesting.

a


--
You received this message because you are subscribed to the Google Groups "sfepy-devel" group.
To post to this group, send email to sfepy...@googlegroups.com.
To unsubscribe from this group, send email to sfepy-devel+unsubscribe@googlegroups.com.

For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.




--
Andre

Andre Smit

unread,
Feb 21, 2012, 10:15:19 AM2/21/12
to sfepy...@googlegroups.com
Yes - attached paper shows for example how to convert Burger's model into Prony series.



On Tue, Feb 21, 2012 at 9:08 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote:
Quick googling told me, that Prony series is a sum of exponential terms with different decays, right? As such, a single term in the series IMHO directly corresponds to the ETH version of the fading memory term. One could simulate the whole series by adding several ETH terms. The TH terms are more general, as the fading memory kernel can by any (even weird) function.

Looking forward to the tutorial.

r.


On 02/21/2012 03:41 PM, Andre Smit wrote:
Brilliant!

I'm closing issues #172 and #114. When I get some time I'll work in a
tutorial on these terms. A comparison with Abaqus that uses Prony series
for viscoelastic definition may be interesting.

a


On Tue, Feb 21, 2012 at 7:52 AM, Robert Cimrman<cimr...@ntc.zcu.cz>  wrote:

Hi Andre,

the new terms for evaluating fading memory stresses are implemented now,
check [1]. It was a little bit tricky for the 'eth' version of terms
because to compute stress one needs to know whole history of loading -
there is no cut-off. Therefore 'preserve_caches' argument has been
introduced to ProblemDefinition.evaluate() - it must be set to True to
evaluate such terms correctly.

I have also changed the loading according to your suggestion. To get the
time history plots, follow the instructions at [1] (or in the example
docstring).

r.




On 02/17/2012 06:50 PM, Andre Smit wrote:

Even better would be to remove the load after 10 steps, say, to see
delayed
stress/strain recovery.

On Fri, Feb 17, 2012 at 9:37 AM, Andre Smit<freev...@gmail.com>
 wrote:

 The stress/strain response of these materials are non-linear with time. I
suggest extending the example to show these responses with plots of
stress
vs. time and strain vs. time. Can the de_cauchy_strain/stress terms be
used
for this?

Andre
--
You received this message because you are subscribed to the Google Groups "sfepy-devel" group.
To post to this group, send email to sfepy...@googlegroups.com.
To unsubscribe from this group, send email to sfepy-devel+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.




--
Andre
05541456.pdf

Robert Cimrman

unread,
Feb 21, 2012, 10:08:05 AM2/21/12
to sfepy...@googlegroups.com
Quick googling told me, that Prony series is a sum of exponential terms with
different decays, right? As such, a single term in the series IMHO directly
corresponds to the ETH version of the fading memory term. One could simulate
the whole series by adding several ETH terms. The TH terms are more general, as
the fading memory kernel can by any (even weird) function.

Looking forward to the tutorial.

r.

On 02/21/2012 03:41 PM, Andre Smit wrote:
> Brilliant!
>
> I'm closing issues #172 and #114. When I get some time I'll work in a
> tutorial on these terms. A comparison with Abaqus that uses Prony series
> for viscoelastic definition may be interesting.
>
> a
>
>
> On Tue, Feb 21, 2012 at 7:52 AM, Robert Cimrman<cimr...@ntc.zcu.cz> wrote:
>
>> Hi Andre,
>>
>> the new terms for evaluating fading memory stresses are implemented now,
>> check [1]. It was a little bit tricky for the 'eth' version of terms
>> because to compute stress one needs to know whole history of loading -
>> there is no cut-off. Therefore 'preserve_caches' argument has been
>> introduced to ProblemDefinition.evaluate() - it must be set to True to
>> evaluate such terms correctly.
>>
>> I have also changed the loading according to your suggestion. To get the
>> time history plots, follow the instructions at [1] (or in the example
>> docstring).
>>
>> r.
>>

>> [1] http://sfepy.org//doc-devel/**examples/linear_elasticity/**
>> linear_viscoelastic.html<http://sfepy.org//doc-devel/examples/linear_elasticity/linear_viscoelastic.html>

Reply all
Reply to author
Forward
0 new messages