Difference between revisions of "Partitions"
(3 intermediate revisions by the same user not shown) | |||
Line 17: | Line 17: | ||
1 1 0 | 1 1 0 | ||
</pre> | </pre> | ||
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. | would set up a problem with two partitions. In the first partition, dofs 1 and 3 would be active, and in the second dofs one and two would be active. | ||
Line 27: | Line 27: | ||
A good place to look to understand how this works is in <code>elements/solid2d/solid2d.f</code> and the routines it calls. The basic gist of it is that if the current partition number, <code>npart</code> the partition you are currently solving, is equal to the data currently in <code>ndfp(dof)</code>, then you should assemble the equations for that <code>dof</code>. The array <code>ndfp</code> is also in <code>part0.h</code> and is set up for you each time you issue the <code>PARTition</code> command during the solution phase (see <code>program/pmacr6.f</code> and <code>program/partpt.f</code>). The data set by the <code>PARTition</code> command during the control phase is stored in <code>ndfst( )</code> which is also located in common block <code>part0.h</code> | A good place to look to understand how this works is in <code>elements/solid2d/solid2d.f</code> and the routines it calls. The basic gist of it is that if the current partition number, <code>npart</code> the partition you are currently solving, is equal to the data currently in <code>ndfp(dof)</code>, then you should assemble the equations for that <code>dof</code>. The array <code>ndfp</code> is also in <code>part0.h</code> and is set up for you each time you issue the <code>PARTition</code> command during the solution phase (see <code>program/pmacr6.f</code> and <code>program/partpt.f</code>). The data set by the <code>PARTition</code> command during the control phase is stored in <code>ndfst( )</code> which is also located in common block <code>part0.h</code> | ||
== Example using FEAP's built-in thermo-elastic capabilities == | |||
<pre> | |||
FEAP * * Partitioned thermo-mechanical analysis | |||
0 0 0 2 3 9 | |||
MATErial 1 | |||
SOLID | |||
ELASTIC ISOTROPIC 100 0.4995 | |||
THERMAL ISOTROPIC 0.25 0.0 | |||
FOURIER ISOTROPIC 10.0 1.0 | |||
DENSITY MASS 0.10 | |||
MIXED | |||
BLOCK | |||
CARTESIAN 20 10 | |||
QUADrilateral 9 | |||
1 0.0 0.0 | |||
2 5.0 0.0 | |||
3 5.0 2.5 | |||
4 0.0 2.5 | |||
CBOUN | |||
NODE 5 0 1 1 | |||
NODE 5 5 1 0 | |||
EBOU | |||
1 0 0 0 1 | |||
EDIS | |||
1 0 0 0 1 | |||
END | |||
ORDER | |||
0 0 1 | |||
PART | |||
0 0 1 ! Thermal partition | |||
1 1 0 ! Mechanical partition | |||
BATCH | |||
OPTI | |||
DT,,0.005 | |||
PART,,1 | |||
TRANs BACK ! For thermal problem | |||
END | |||
BATCH | |||
PLOT DEFOrm | |||
PLOT FACT 0.7 ! to keep plot in window | |||
LOOP,,20 | |||
TIME | |||
PART,,1 | |||
LOOP,,5 ! Note that at least 3 iterations | |||
TANG,,1 ! are needed to converge (since no | |||
NEXT ! compling tangent is included) | |||
PART,,2 | |||
LOOP,,5 ! Note that at least 3 iterations | |||
TANG,,1 ! are needed to converge (since no | |||
NEXT ! compling tangent is included) | |||
PLOT,CLEAN | |||
PLOT FRAMe 1 | |||
PLOT RANG 0.4 0.9 | |||
PLOT CONT 3 ! Temperature contours | |||
PLOT FRAMe 2 | |||
PLOT RANG -1.0 0.2 | |||
PLOT STRE 1 ! 11-Stress contours | |||
PLOT FRAMe 3 | |||
PLOT RANG -1.25 0.0 | |||
PLOT CONT 1 ! Displacement contours | |||
PLOT FRAMe 4 | |||
PLOT RANG -1.0 0.2 | |||
PLOT STRE 2 ! 22-Stress contours | |||
PLOT TITLE | |||
NEXT | |||
COMM Temp-Disp_Partn | |||
END | |||
!INTEractive | |||
STOP | |||
</pre> |
Latest revision as of 12:28, 5 June 2018
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 partition, 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
Example using FEAP's built-in thermo-elastic capabilities
FEAP * * Partitioned thermo-mechanical analysis 0 0 0 2 3 9 MATErial 1 SOLID ELASTIC ISOTROPIC 100 0.4995 THERMAL ISOTROPIC 0.25 0.0 FOURIER ISOTROPIC 10.0 1.0 DENSITY MASS 0.10 MIXED BLOCK CARTESIAN 20 10 QUADrilateral 9 1 0.0 0.0 2 5.0 0.0 3 5.0 2.5 4 0.0 2.5 CBOUN NODE 5 0 1 1 NODE 5 5 1 0 EBOU 1 0 0 0 1 EDIS 1 0 0 0 1 END ORDER 0 0 1 PART 0 0 1 ! Thermal partition 1 1 0 ! Mechanical partition BATCH OPTI DT,,0.005 PART,,1 TRANs BACK ! For thermal problem END BATCH PLOT DEFOrm PLOT FACT 0.7 ! to keep plot in window LOOP,,20 TIME PART,,1 LOOP,,5 ! Note that at least 3 iterations TANG,,1 ! are needed to converge (since no NEXT ! compling tangent is included) PART,,2 LOOP,,5 ! Note that at least 3 iterations TANG,,1 ! are needed to converge (since no NEXT ! compling tangent is included) PLOT,CLEAN PLOT FRAMe 1 PLOT RANG 0.4 0.9 PLOT CONT 3 ! Temperature contours PLOT FRAMe 2 PLOT RANG -1.0 0.2 PLOT STRE 1 ! 11-Stress contours PLOT FRAMe 3 PLOT RANG -1.25 0.0 PLOT CONT 1 ! Displacement contours PLOT FRAMe 4 PLOT RANG -1.0 0.2 PLOT STRE 2 ! 22-Stress contours PLOT TITLE NEXT COMM Temp-Disp_Partn END !INTEractive STOP