Hi guys
Playing around with the dw_lin_elastic_th term. Unfortunately, no examples for this one. I've pasted my code at [1]. I'm assuming the material parameter H is similar to that for an isotropic material D. I'm getting a 'history error' as shown below. Any ideas?
Thx
[1] http://paste.pocoo.org/show/306024/
[grassy@myhost sfepy]$ ~/sfepy/simple.py nits.py sfepy: left over: ['disp', 'verbose', '__builtins__', '_filename', '__file__', '__name__', 'stress_strain', 'youngpoisson_to_lame', 'young', '__package__', 'mesh_file', 'Mesh', 'stiffness_tensor_youngpoisson', 'poisson', '__doc__'] sfepy: reading mesh (/home/grassy/sfepy.wiki/msh/its2D.mesh)... sfepy: ...done in 0.00 s sfepy: setting up domain edges... sfepy: ...done in 0.00 s sfepy: creating regions... sfepy: Top sfepy: Bottom sfepy: Omega sfepy: Left sfepy: ...done in 0.01 s sfepy: equation "equilibrium": sfepy: dw_lin_elastic_iso.2.Omega(asphalt.lam,asphalt.mu,v,u)+ dw_lin_elastic_th.2.Omega(ts,asphalt.D,v,du/dt)=0
sfepy: setting up dof connectivities... sfepy: ...done in 0.00 s sfepy: using solvers: ts: ts nls: newton ls: ls sfepy: ====== time 0.000000e+00 (step 1 of 10) ===== sfepy: updating variables...
Displacement: -0.111111111111 sfepy: updating materials... sfepy: asphalt sfepy: ...done in 0.00 s sfepy: matrix shape: (93, 93) sfepy: assembling matrix graph... sfepy: ...done in 0.00 s sfepy: matrix structural nonzeros: 1063 (1.23e-01% fill) sfepy: nls: iter: 0, residual: 1.015969e+02 (rel: 1.000000e+00) sfepy: rezidual: 0.00 [s] sfepy: solve: 0.00 [s] sfepy: matrix: 0.01 [s] sfepy: nls: iter: 1, residual: 7.768306e-14 (rel: 7.646202e-16) sfepy: equation "tmp": sfepy: de_cauchy_strain.2.Omega(u) sfepy: equation "tmp": sfepy: de_cauchy_stress.2.Omega(asphalt.D,u) sfepy: ====== time 1.111111e-01 (step 2 of 10) ===== sfepy: updating variables...
Displacement: -0.222222222222 sfepy: updating materials... sfepy: asphalt sfepy: ...done in 0.00 s history update! Traceback (most recent call last): File "/home/grassy/sfepy/simple.py", line 120, in <module> main() File "/home/grassy/sfepy/simple.py", line 117, in main app() File "/home/grassy/sfepy/sfepy/applications/application.py", line 29, in call_basic return self.call( kwargs ) File "/home/grassy/sfepy/sfepy/applications/simple_app.py", line 112, in call post_process_hook_final=self.post_process_hook_final) File "/home/grassy/sfepy/sfepy/solvers/generic.py", line 216, in solve_direct nls_status=nls_status) File "/home/grassy/sfepy/sfepy/solvers/generic.py", line 138, in solve_evolutionary_op for ts, state in time_solver( state0 ): File "/home/grassy/sfepy/sfepy/solvers/ts.py", line 118, in __call__ state = step_fun( self.ts, state0, *step_args ) File "/home/grassy/sfepy/sfepy/solvers/generic.py", line 116, in time_step_function state = problem.solve(state0=state0) File "/home/grassy/sfepy/sfepy/fem/problemDef.py", line 799, in solve vec = solvers.nls(vec0) File "/home/grassy/sfepy/sfepy/solvers/nls.py", line 183, in __call__ vec_r = fun( vec_x ) File "/home/grassy/sfepy/sfepy/fem/evaluate.py", line 25, in eval_residual vec_r = pb.equations.eval_residuals(vec) File "/home/grassy/sfepy/sfepy/fem/equations.py", line 510, in eval_residuals self.evaluate(mode='weak', dw_mode='vector', asm_obj=residual) File "/home/grassy/sfepy/sfepy/fem/equations.py", line 495, in evaluate asm_obj=asm_obj) File "/home/grassy/sfepy/sfepy/fem/equations.py", line 674, in evaluate ret_status=True) File "/home/grassy/sfepy/sfepy/terms/terms.py", line 1258, in evaluate kwargs): File "/home/grassy/sfepy/sfepy/terms/terms_base.py", line 81, in _call for ii, fargs in iter_kernel(): File "/home/grassy/sfepy/sfepy/terms/termsLinElasticity.py", line 179, in iter_kernel state=state, get_vector=self.get_vector) File "/home/grassy/sfepy/sfepy/terms/cache.py", line 233, in __call__ out = self._call(key, term, ih, kwargs) File "/home/grassy/sfepy/sfepy/terms/cache.py", line 215, in _call self.update(key, term, ih, kwargs) File "/home/grassy/sfepy/sfepy/terms/cachesBasic.py", line 92, in update print kwargs['history'] KeyError: 'history'
-- Andre
Playing in dark corners... :)
The parameter H is similar in a sense, that H[step] is like D, so H is an array of Ds - a convolution kernel, whose items (the individual Ds) tend to zero.
The TH terms are not meant to be used with the 'quasistatic' initial time step option. Unfortunately, they are also very undocumented and there is no example/test in sfepy (issue 131)... So it's quite possible, that they are also simply broken now. I am now finishing that material nonlinearity stuff, so then I can have a look at this.
r.
On 12/17/10 16:03, Andre Smit wrote:
Hi guys
Playing around with the dw_lin_elastic_th term. Unfortunately, no examples for this one. I've pasted my code at [1]. I'm assuming the material parameter H is similar to that for an isotropic material D. I'm getting a 'history error' as shown below. Any ideas?
Thx
[1] http://paste.pocoo.org/show/306024/
[grassy@myhost sfepy]$ ~/sfepy/simple.py nits.py sfepy: left over: ['disp', 'verbose', '__builtins__', '_filename', '__file__', '__name__', 'stress_strain', 'youngpoisson_to_lame', 'young', '__package__', 'mesh_file', 'Mesh', 'stiffness_tensor_youngpoisson', 'poisson', '__doc__'] sfepy: reading mesh (/home/grassy/sfepy.wiki/msh/its2D.mesh)... sfepy: ...done in 0.00 s sfepy: setting up domain edges... sfepy: ...done in 0.00 s sfepy: creating regions... sfepy: Top sfepy: Bottom sfepy: Omega sfepy: Left sfepy: ...done in 0.01 s sfepy: equation "equilibrium": sfepy: dw_lin_elastic_iso.2.Omega(asphalt.lam,asphalt.mu,v,u)+ dw_lin_elastic_th.2.Omega(ts,asphalt.D,v,du/dt)=0
sfepy: setting up dof connectivities... sfepy: ...done in 0.00 s sfepy: using solvers: ts: ts nls: newton ls: ls sfepy: ====== time 0.000000e+00 (step 1 of 10) ===== sfepy: updating variables...
Displacement: -0.111111111111 sfepy: updating materials... sfepy: asphalt sfepy: ...done in 0.00 s sfepy: matrix shape: (93, 93) sfepy: assembling matrix graph... sfepy: ...done in 0.00 s sfepy: matrix structural nonzeros: 1063 (1.23e-01% fill) sfepy: nls: iter: 0, residual: 1.015969e+02 (rel: 1.000000e+00) sfepy: rezidual: 0.00 [s] sfepy: solve: 0.00 [s] sfepy: matrix: 0.01 [s] sfepy: nls: iter: 1, residual: 7.768306e-14 (rel: 7.646202e-16) sfepy: equation "tmp": sfepy: de_cauchy_strain.2.Omega(u) sfepy: equation "tmp": sfepy: de_cauchy_stress.2.Omega(asphalt.D,u) sfepy: ====== time 1.111111e-01 (step 2 of 10) ===== sfepy: updating variables...
Displacement: -0.222222222222 sfepy: updating materials... sfepy: asphalt sfepy: ...done in 0.00 s history update! Traceback (most recent call last): File "/home/grassy/sfepy/simple.py", line 120, in<module> main() File "/home/grassy/sfepy/simple.py", line 117, in main app() File "/home/grassy/sfepy/sfepy/applications/application.py", line 29, in call_basic return self.call( kwargs ) File "/home/grassy/sfepy/sfepy/applications/simple_app.py", line 112, in call post_process_hook_final=self.post_process_hook_final) File "/home/grassy/sfepy/sfepy/solvers/generic.py", line 216, in solve_direct nls_status=nls_status) File "/home/grassy/sfepy/sfepy/solvers/generic.py", line 138, in solve_evolutionary_op for ts, state in time_solver( state0 ): File "/home/grassy/sfepy/sfepy/solvers/ts.py", line 118, in __call__ state = step_fun( self.ts, state0, *step_args ) File "/home/grassy/sfepy/sfepy/solvers/generic.py", line 116, in time_step_function state = problem.solve(state0=state0) File "/home/grassy/sfepy/sfepy/fem/problemDef.py", line 799, in solve vec = solvers.nls(vec0) File "/home/grassy/sfepy/sfepy/solvers/nls.py", line 183, in __call__ vec_r = fun( vec_x ) File "/home/grassy/sfepy/sfepy/fem/evaluate.py", line 25, in eval_residual vec_r = pb.equations.eval_residuals(vec) File "/home/grassy/sfepy/sfepy/fem/equations.py", line 510, in eval_residuals self.evaluate(mode='weak', dw_mode='vector', asm_obj=residual) File "/home/grassy/sfepy/sfepy/fem/equations.py", line 495, in evaluate asm_obj=asm_obj) File "/home/grassy/sfepy/sfepy/fem/equations.py", line 674, in evaluate ret_status=True) File "/home/grassy/sfepy/sfepy/terms/terms.py", line 1258, in evaluate kwargs): File "/home/grassy/sfepy/sfepy/terms/terms_base.py", line 81, in _call for ii, fargs in iter_kernel(): File "/home/grassy/sfepy/sfepy/terms/termsLinElasticity.py", line 179, in iter_kernel state=state, get_vector=self.get_vector) File "/home/grassy/sfepy/sfepy/terms/cache.py", line 233, in __call__ out = self._call(key, term, ih, kwargs) File "/home/grassy/sfepy/sfepy/terms/cache.py", line 215, in _call self.update(key, term, ih, kwargs) File "/home/grassy/sfepy/sfepy/terms/cachesBasic.py", line 92, in update print kwargs['history'] KeyError: 'history'