Civil Engineering Reference
In-Depth Information
routines described in the previous section. Thus routines like
cube_bc20
return
rest
from a knowledge of the number of elements in each direction and the problem-specific
boundary conditions. Following its creation,
rest
is often rearranged using subroutines
rearrange
or
rearrange_2
before being used in routines to calculate the steering
vector
g
from the restraint data. Because there is now no
nf
, replacements for subroutine
num_to_g
which was used in all serial programs are necessary. The replacement routine
is
find_g3
in Programs 12.1, 12.2, 12.6, 12.7,
find_g4
in Programs 12.3, 12.4, 12.5,
and
find_g
in Programs 12.8, 12.9, 12.10. The different versions are necessary because
rather large volumes of data are being searched.
It should be re-emphasised that the number of restrained nodes,
nr
, is now explicitly
calculated in each parallel program and does not have to be input.
12.2.8 Gathering and scattering
This is done very neatly in the serial programs using the power of Fortran 95 as described
in Section 1.9.4. Thus a typical gather-matrix multiply-scatter loop around the elements,
the core of EBE iteration methods, might read:
elements_2: DO iel=1,nels
g=g_g(:,iel)
pmul=p(g)
utemp=MATMUL(km,pmul)
u(g)=u(g)+utemp
END DO elements_2
In parallel,
u
and
p
are distributed as
u_pp
and
p_pp
while
utemp
and
pmul
are dis-
tributed as two-dimensional arrays
utemp_pp
and
pmul_pp
that hold all the components
of
utemp
and
pmul
for that processor.
Thus the parallel loop becomes:
CALL gather(p_pp,pmul_pp)
elements_2: DO iel=1,nels_pp
utemp_pp(:,iel)=MATMUL(km,pmul_pp(:,iel))
END DO elements_2
CALL scatter(u_pp,utemp_pp)
12.2.9 Reindexing
When loads are read in or displacements fixed, their global freedom numbers are specified.
In parallel, the appropriate equations are distributed across the processors in some way and
so the appropriate indexing must be found using
reindex_fixed_nodes
.
12.2.10 Domain composition
For parallel FE processing, pieces of a large mesh have to be allocated to the processors.
These pieces are traditionally called
subdomains
. It is also traditional to speak of the
whole mesh or “domain” being “decomposed” into its constituent subdomains. This use of