Partitions

From FEAP Wiki
Revision as of 12:17, 5 June 2018 by S g (talk | contribs) (Created page with "Partitions allows one to use operator splitting methods to solve problems. A given dof can be active in any partition that you choose and each degree of freedom can use its o...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Partitions allows one to use operator splitting methods to solve problems. A given dof can be active in any partition that you choose and each degree of freedom can use its own order integrator.

Setting the order of the integrator

The ORDEr for the integrator for each dof is set with the ORDEr command, where 0 means static, 1 first order, etc. The ORDEr command is given after the END of the mesh and before any solution commands. For example ORDEr 1 2 2 0 would set dof 1 to use a first order integrator, dofs 2 and 3 to use a second order integrator, and dof 4 to be static.

Setting the partitions

You use the PARTition command in the control phase (after the END of the mesh and before and solution commands) to set which dofs will be active in which partition (i.e. which part of the operator split). A 0 means the dof will not be active in the partition and a 1 means it will be active. You have one line of data for each partition that you will use. For example PARTition 1 0 1 1 1 0 would set up a problem with two partitions. In the first dofs 1 and 3 would be active and in the second dofs one and two would be active.


Activating the partitions

In the solutions phase you use the PARTition command to switch between which partition you would like to solve. For example PARTition,,2 would activate the second partition for solution.

Programing aspects

If you are programing your own element for use with partitions, then your element needs to be programmed to assemble the equations that you have indicated with the PARTition command during the control phase. Your element does this based on the value that is passed to it in the common block variable npart which you will find in part0.h.

A good place to look to understand how this works is in elements/solid2d/solid2d.f and the routines it calls. The basic gist of it is that if the current partition number, npart the partition you are currently solving, is equal to the data currently in ndfp(dof), then you should assemble the equations for that dof. The array ndfp is also in part0.h and is set up for you each time you issue the PARTition command during the solution phase (see program/pmacr6.f and program/partpt.f). The data set by the PARTition command during the control phase is stored in ndfst( ) which is also located in common block part0.h