All Posts

Solfec-2.0 update 0

Just a little note to say that work on Solfec-2.0 is underway:) Currently the code cannot do much: I am ironing out a basic parallel data layout. I am using a simple global array based approach, utilising MPI-3.0 RDMA (remote direct memory access). It’s based on the implementation suggested in the book “Using Advanced MPI”. The current version of the array code is here: ga.hpp and ga.cpp. The way the arrays are used to store computational data can be viewed in compute.hpp. Since the arrays are of fixed size – there is a little bit of book keeping that needs to be implemented – in order to allow for arbitrary sequences of insertions and deletions of computational data. This is the aspect of the code, which I am currently implementing and smoothing out. Only MPI rank-0 process is interpreting the input Python file – the remaining processes join in during the computation loop – which can be invoked multiple times from the input file – with insertions and deletions of computational data in between. (…)

Read more ...


SOLFEC_EXPORT command

In analogy to Solfec’s XDMF_EXPORT command, a new SOLFEC_EXPORT command has been added. This allows to save a subset of results into a separate directory and view them using Solfec’s viewer. Within Solfec sources example inp/devel/solfec-export.py depicts an application of this idea. (…)

Read more ...


Parmec ball joint and articulated pendulum example

PARMEC includes its first algebraic joint – a ball joint – which is realised by nullifying relative velocity of a coincident point between two particles. BALL_JOINT command is used to define a pair of particles and the point. Since joints are realised as algebraic constraints they do not influence the stable time step. Instead a linear system is solved at every time step. Any number of joints can be added to the system, although linear dependence should be avoided (QR solver can be used in such case, see the Config.mak file). The articulated pendulum example demonstrates performance of the ball joint, also in conjunction with the torsional spring. The example is summarised below. (…)

Read more ...


Parmec spherical joint

Torsion spring has now been added to PARMEC, allowing to model angular hinges with rotational limits and spherical joints. TORSION_SPRING command is used to define an angle–torque relationship for three angles of rotation about user specified local coordinate axes (x–roll, y–pitch, z–yaw). The command includes a cone constraint which allows to model spherical joints in roll-pitch, roll-yaw, and pitch-yaw planes. Example application application of this functionality is included as tests/spherical_joint.py. A ParaView animation generated by this test is included below. (…)

Read more ...


Parmec spring contact

Parmec includes a simple spring contact modeling capability, where a contact plane on one particle can be paired up with a contact point on another particle. Both particles can be analytical (need no geometry), while the contact spring and dashpot curves are user defined. Friction, including sticking and slip, can also be added. An example test of this capability is tests/spring_contact_plane.py. Parmec SPRING command is used to define the entire contact interactions (parameters spring, dashpot and friction). Upon running it generates time history figures tests/spring_contact_plane_{z,f_ff}.png and output files viewable with ParaView. An animation and the figures are included below. (…)

Read more ...


Parmec spring curve tests

Thanks to user feedback, Parmec begins to be smoothed out. An automated spring curve correctness test has now been added as tests/spring_curve_tests.py allowing to generate and run a number of simulations with random spring curves within a stroke-force box [-1, -1, 1, 1]. This test initiates what may become a suite of automated regression tests for Parmec. If matplotlib and imagemagic are installed, it generates a juxtaposed image, comparing input and output curves. An example image is included below. (…)

Read more ...


UNSPRING and spring state in Parmec

PARMEC includes a capability to model rigid body and SPRING systems. As a part of it an UNSPRING command allows to deactivate selected springs when a total force of a set of “test springs” exceeds a prescribed bound. This facilitates modelling of simple failure scenarios. Spring states are outputted as scalar fields (in XDMF format) and can be viewed with ParaView or similar tools. The video clip below is based on this example. Spring states can be visualized by selecting the ‘SS’ entity and using “Coor Map Editor” in ParaView to “Interpret Values as Cathegories” (checkbox at the top of the editor dialog box) and then adding the discrete values used by the ‘SS’ field (-3.0, -2.0, -1.0, …) as described for the OUTPUT command. Spring states can also be outputted as HISTORY (as in the example). (…)

Read more ...


Solfec POP audit report

Duplicate explicit target name: “pop”.

Read more ...


Partially cached time series in Solfec

Motivated by user feedback a partially cached time series capability has been included into SOLFEC-1.0. This allows to use many large TIME_SERIES objects without running out of memory. To facilitate that an optional cache argument has been added – please see the documentation and example.

Read more ...


TR1: Co-rotated and reduced order time integrators

Technical Report 1 describes a linearly implicit time integration method combined with a family of finite element formulations: (…)

Read more ...


Hybrid solver in Solfec

Solfec’s hybrid solver is now ready for testing. This solver combines the ability of modeling non–smooth multi–body structures in Solfec (e.g. as fully resolved FE models) in conjunction with a lightweight rigid–body/nonlinear–spring approach implemented in PARMEC. A simple example of that can be seen in the video below:

Read more ...


About PARMES

Hi:) This website is an outlet for ideas and resources in the area of programming parallel computational mechanics, multi-body analysis and particulate media software. On and off, I have been working on one such software, SOLFEC-1.0, which you will find gradually better documented here. There are also other computational codes and libraries, which I would like to share about. Some of those are included in the Navigation area. See also: Linkedin and Researchgate profiles. Donate: Liberapay. Tomek:)

Read more ...