# VECFEM3 Reference Manual: vemdis

Type: FORTRAN routine

## NAME

vemdis - prepares a FEM mesh for the VECFEM calculation.

## SYNOPSIS

CALL VEMDIS(
  LIVEM, IVEM, LNEK, NEK, LRPARM, RPARM, LIPARM, IPARM, LDNOD, DNOD, LRDPRM, RDPARM, LIDPRM, IDPARM, LNODN, NODNUM, LNOD, NOD, LNOPRM, NOPARM, LBIG, RBIG, IBIG)
INTEGER
  LIVEM, LNEK, LRPARM, LIPARM, LDNOD, LRDPRM, LIDPRM, LNODN, LNOPRM, LBIG
INTEGER
  IVEM(LIVEM), NEK(LNEK), IPARM(LIPARM), DNOD(LDNOD), IDPARM(LIDPRM), NODNUM(LNODN), IBIG(*)
DOUBLE PRECISION
  RPARM(LRPARM), RDPARM(LRDPRM), NOD(LDNOD), NOPARM(LNOPRM), RBIG(LBIG)

## PURPOSE

vemdis prepares the finite element mesh data (see mesh) for the VECFEM calculation and resorts the mesh array for an efficient run of VECFEM on parallel and vector computers. Especially the numbering of the proposal functions is made continuous. It has to be called before the call of any other routine except vemge2, idevem and patvem. If you change the structure of the mesh (e.g. by refinements), you have to call vemdis again. An isoparametrical mesh indicated by OWN=0 is changed to a mesh with component-by-component numbering of the proposal functions, therefore you have to specify LNEK and LDNOD with twice the values that you really used at the input. OWN=0 is kept. Please keep in mind that the mesh and the mesh management is totally rearranged by vemdis to optimize the program run.

## ARGUMENTS

LIVEM

integer, scalar, input, local
  Length of the integer information vector.
IVEM
integer, array: IVEM(LIVEM), input/output, local/global
  Integer information vector.
(1)=MESH, input, local
  Start address of the mesh informations in IVEM, MESH>203+ NPROC.
(2)=ERR, output, global
  Error number.

  0 | program terminated without error.
  90 | LBIG is too small.
  95 | IVEM array is too small.
  99 | fatal error.

(5)=NIVEM, output, local
  Used length of IVEM.
(51)=ORDER, input, global
  Order for the integration formulas for the computation of the element matrices, see veme00, veme02 or vemp02.
(80)=LOUT, input, local
  Unit number of the standard output file, normally 6.
(81)=OUTCNT, input, local
  Output control flag.

  0 | only error messages are printed
  1 | in addition a protocol is printed.

(200)=NPROC, input, global
  Number of processes, see combgn.
(201)=MYPROC, input, local
  Logical process id number, see combgn.
(202)=NMSG, input/output, global
  Message counter. The difference of the input and the output values gives the number of communications during the vemdis call.
(204)=TIDS(1), input, global
  Begin of the list TIDS, which defines the mapping of the logical process ids to the physical process ids. See combgn.
(MESH), input/output, local
  Start of mesh informations, see mesh.
(MESH+18)=DIS, input/output, local
  If at the input DIS=220964, the ids of the geometrical nodes in NEK and DNOD refer to the local numbering on the processor. In the other cases the numbering refers to the global numbering over all processors. At the output always DIS=220964.
LNEK
integer, scalar, input, local
  Length of the element array.
NEK
integer, array: NEK(LNEK), input/output, local
  Array of the elements, see mesh.
LRPARM
integer, scalar, input, local
  Length of the real parameter array.
RPARM
double precision, array: RPARM(LRPARM), input/output, local
  Real parameter array, see mesh.
LIPARM
integer, scalar, input, local
  Length of the integer parameter array.
IPARM
integer, array: IPARM(LIPARM), input/output, local
  Integer parameter array, see mesh.
LDNOD
integer, scalar, input, local
  Length of the array of the Dirichlet nodes.
DNOD
integer, array: DNOD(LDNOD), input/output, local
  Array of the Dirichlet nodes, see mesh.
LRDPRM
integer, scalar, input, local
  Length of the real Dirichlet parameter array.
RDPARM
double precision, array: RDPARM(LRDPRM), input/output, local
  Array of the real Dirichlet parameters, see mesh.
LIDPRM
integer, scalar, input, local
  Length of the integer Dirichlet parameter array.
IDPARM
integer, array: IDPARM(LIDPRM), input/output, local
  Array of the integer Dirichlet parameters, see mesh.
LNODN
integer, scalar, input, local
  Length of the array of the id numbers of the geometrical nodes.
NODNUM
integer, array: NODNUM(LNODN), input/output, local
  Array of the id numbers of the geometrical nodes, see mesh.
LNOD
integer, scalar, input, local
  Length of the array of the coordinates of the geometrical nodes.
NOD
double precision, array: NOD(LNOD), input/output, local
  Array of the coordinates of the geometrical nodes, see mesh.
LNOPRM
integer, scalar, input, local
  Length of the array of the node parameters.
NOPARM
double precision, array: NOPARM(LNOPRM), input/output, local
  Array of the node parameters, see mesh.
LBIG
integer, scalar, input, local
  Length of the real work array. It is impossible to compute the needed length for LBIG before the first vemdis run. A minimal length of LBIG cannot be given. It should be as large as possible.
RBIG
double precision, array: RBIG(LBIG), work array, local
  Real work array.
IBIG
integer, array: IBIG(*), work array, local
  Integer work array, RBIG and IBIG have to be defined by the EQUIVALENCE statement.

## EXAMPLE

See vemexamples.

## METHOD

### Numbering

The numbering of the proposal functions is made continuous. The old numbering is lost.

### Parallel Computer

The elements are distributed to the processors so that the loading during the calculation of the element matrices is balanced and the communication for the mounting of the global system is minimal. After the distribution, all informations necessary for the calculation are available at the processor. The geometrical nodes which are referred to by the elements and Dirichlet conditions on one processor get a local numbering. The list NODNUM gives the mapping of the local numbering of the geometrical nodes onto the global numbering.

### Vector Computer

For an efficient mounting of the global system on a vector computer the elements on the processors are resorted. Proposal nodes contained in many elements should be avoided.

## SEE

VECFEM, vemcompile, vemrun, vemhint, mesh, vemexamples, idevem, patvem, veme00, veme02, vemge2, vemgen(later), vemopt(later), vemu02.

## REFERENCES

[FAQ], [DATAMAN], [DATAMAN2], [P_MPI].

## COPYRIGHTS

Program by L. Grosz, 1994-1996. Copyrights by Universitaet Karlsruhe 1989-1996. Copyrights by Lutz Grosz 1996. All rights reserved. More details see VECFEM.

By L. Grosz, Auckland, 31 May, 2000.