I am pleased to announce the release of SfePy 2023.1.
Description
-----------
SfePy (simple finite elements in Python) is a software for solving systems of
coupled partial differential equations by finite element methods. It is
distributed under the new BSD license.
Home page: https://sfepy.org
Mailing list: https://mail.python.org/mm3/mailman3/lists/sfepy.python.org/
Git (source) repository, issue tracker: https://github.com/sfepy/sfepy
Highlights of this release
-------------------------…
[View More]-
- support meshes with cells of different topological dimensions
- unified treatment of volume and surface integrals
- updated elastodynamics solvers
- reciprocal mass matrix algorithm
- seismic load and piezo-elastodynamics examples
- use GitHub Actions for CI
For full release notes see [1].
Cheers,
Robert Cimrman
[1] http://docs.sfepy.org/doc/release_notes.html#id1
---
Contributors to this release in alphabetical order:
Robert Cimrman
Florian Le Bourdais
Vladimir Lukes
Yosef Meller
Matyas Novak
[View Less]
Hi all.
I'm modeling a problem where a body is pulled on a small patch of the
boundary by a tool. The movement of the tool is prescribed. So I thought
I'd use a boundary condition defined by a function, as so:
def table_select_by_ts(ts, coords, bc=None, problem=None, table=None):
return np.tile(table[ts.step], (coords.shape[0], 1))
tool_disp_fun = Function('tool_disp_fun', table_select_by_ts,
extra_args={'table': displacement_table})
tool_velo_fun = Function('tool_velo_fun', …
[View More]table_select_by_ts,
extra_args={'table': velocity_table})
tool_accel_fun = Function('tool_accel_fun', table_select_by_ts,
extra_args={'table': accel_table})
tool_bc = EssentialBC('tool_bc', self._tool, {
'u.all': tool_disp_fun,
'v.all': tool_velo_fun,
'a.all': tool_accel_fun
})
Then I tried to use it with the Newmark solver, but got a behaviour where
the solver doesn't responde to changes in direction. It produces a nice
result for a constant-velocity movement in one direction, but fails if
there is then a bend in the path. As much as I understand, this is because
the solver's idea is to always combine the previous acceleration ield with
the current, and so it misses the prescribed acceleration when it changes.
I also looked at Generalized-alpha and Bathe, but those seem to only use
the first boundary condition and not update on subsequent frames.
So my question is, what do you think the right solver for this problem is,
or am I using the right solver already but doing it wrong?
Thanks,
Yosef Meller.
[View Less]