# VECFEM3 Reference Manual: patvem

Type: FORTRAN routine

## NAME

patvem - reads a PATRAN neutral file

## SYNOPSIS

CALL PATVEM(
  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

PATRAN is a program for the pre- and postprocessing of the FEM (in structural analysis). The generation of the FEM mesh is supported by graphical equipment. The solutions can be plotted. The interface to FEM programs is the PATRAN neutral file, which contains all information of the mesh.

patvem reads a neutral file on the first process and distributes the mesh to the processes. The element groups are created from the geometrical properties of the elements. The node forces form the group of the nodal elements (CLASS=0) and the nodal displacements specify the geometrical nodes with Dirichlet conditions. The force components and the values of the displacements are stored as vector parameters. The interface supports only isoparametrical meshes. For the use of mixed finite element methods, PATRAN can be used to create a geometrical mesh. From this mesh the mixed finite element mesh can be created by vemgen(later) or vemge2. patvem can be called without a preceding vemdis call, but you have to call vemdis before you call any other VECFEM routine.

## ARGUMENTS

LIVEM integer, scalar, input, local
  Length of the integer information vector, LIVEM>= MESH+ NINFO.
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 | mesh arrays are too small.
    96 | unexpected element type.
    97 | DIM or NK is illegal.
    99 | fatal error.

  (5)=NIVEM, output, local
    Used length of IVEM.
  (120)=LOUT, input, local
    Unit number of the standard output file, normally 6.
  (121)=OUTCNT, input, local
    Output control flag, normally 1.

    0 | only error messages are printed.
    >0 | a protocol is printed.

  (122), input, local
    Unit of the neutral file. The unit is only used on the process 1. On the assigned data set the 'REWIND'-command has to be executable.
  (124)=COMP6, input, local
    If COMP6=0, the constrained displacements in x-direction define the Dirichlet conditions for component 1, in y-direction for component 2, etc. In the other cases the constrained displacements in x-direction with the constraint id D define the Dirichlet conditions for component D.
  (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 patvem 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+2)=NK, input, global
    Number of solution components. If COMP6=0: 1<=NK<=6.
  (MESH+3)=DIM, input, global
    Space dimension, 1<=DIM<=3.
LNEK integer, scalar, input, local
  Length of the element array.
NEK integer, array: NEK(LNEK), 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), output, local
  Real parameter array, see mesh.
LIPARM integer, scalar, input, local
  Length of the integer parameter array.
IPARM integer, array: IPARM(LIPARM), 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, 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), 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), 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), 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), 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), output, local
  Array of the node parameters, see mesh.
LBIG integer, scalar, input, local
  Length of the real work array. The needed length of LBIG depends on the given mesh. 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

On the first process patvem passes through the PATRAN neutral file twice. In the first pass the program checks the neutral file and computes the needed length for the mesh arrays. In the second pass patvem reads the mesh data and distributes the mesh to the other processes so that the mesh arrays are occupied evenly.

### The Nodes

If DIM=3, patvem reads the x-,y- and z-coordinates from the PATRAN neutral file. If DIM=2, only the x- and y-coordinates are read, and if DIM=1, only the x-coordinate is read.

### The Elements

The following table shows all PATRAN element types which can be read by patvem:

PATRAN | VECFEM
Element | SHAPE | GEOTYP | FORM | CLASS
BAR/2 | 2 | 2 | 2 | 1
BAR/3 | 2 | 3 | 2 | 1
BAR/4 | 2 | 4 | 2 | 1
TRI/3 | 3 | 3 | 3 | 2
TRI/6 | 3 | 6 | 3 | 2
TRI/9 | 3 | 9 | 3 | 2
TRI/10 | 3 | 10 | 3 | 2
QUAD/4 | 4 | 4 | 4 | 2
QUAD/8 | 4 | 8 | 4 | 2
QUAD/9 | 4 | 9 | 4 | 2
QUAD/12 | 4 | 12 | 4 | 2
QUAD/16 | 4 | 16 | 4 | 2
TET/4 | 5 | 4 | 4 | 3
TET/10 | 5 | 10 | 4 | 3
TET/16 | 5 | 16 | 4 | 3
WEDGE/6 | 7 | 6 | 6 | 3
WEDGE/15 | 7 | 15 | 6 | 3
WEDGE/24 | 7 | 24 | 6 | 3
HEX/8 | 8 | 8 | 8 | 3
HEX/20 | 8 | 20 | 8 | 3
HEX/32 | 8 | 32 | 8 | 3

The id numbers of the geometrical nodes which define the elements are stored in NEK. The groups are split up by the element parameters (GEOTYP,FORM,CLASS) so that a minimal number of groups will be created. The element number of PATRAN is stored as the first integer vector parameter. patvem does not read the property identities of the PATRAN elements.

Example: You create a hyperpatch with the solid cubic wedge (24 nodes):

    CFEG,HP1,WEDG/24

Then patvem creates at least one group with:

    GEOTYP=24
    FORM=6
    CLASS=3
    first integer vector parameter = element number in PATRAN

### Nodal Forces

Nodal elements (CLASS=0) are created from the nodal forces. They form one group. The load set id is stored as the first integer vector parameter. There is no element number. Additionally the six force components are stored as real vector parameters. So the components in x-direction are stored as the first real vector parameter, the y-components are the second real vector parameter and so on up to the sixth real vector parameter.

Example: Create a nodal force with:

    DFEG,P1,FORC,1/2/3/0/0/0,29

Then patvem creates :

    first integer vector parameter = 29
    first real vector parameter    = 1.0
    second real vector parameter   = 2.0
    third real vector parameter    = 3.0
    fourth real vector parameter   = 0.0
    fifth real vector parameter    = 0.0
    sixth real vector parameter    = 0.0

### Dirichlet Conditions COMP6=0

The nodal displacements in the constraint sets specify the nodes where Dirichlet conditions are dictated. So the nodal displacement in x-direction specifies the Dirichlet conditions for the first component of the solution, the y-direction specifies the Dirichlet conditions for the second component of the solution, and so on up to the NK-th component of the solution. All constraint sets are considered and their constraint set id numbers are stored as the first integer vector parameter. Additionally the values of the nodal displacement components are stored as real vector parameters. So the value of the nodal displacement in x-direction is the first real vector parameter for component 1, the value of the nodal displacement in y-direction is the first real vector parameter for component 2 and so on up to the NK-th component.

Example: Create a nodal constraint set with:

    DFEG,P1,DISP,1//3/0/0/0,29

Then patvem creates:

    first integer vector parameter = 29  for component 1
    first integer vector parameter = 29  for component 3
    first integer vector parameter = 29  for component 4
    first integer vector parameter = 29  for component 5
    first integer vector parameter = 29  for component 6
    first real vector parameter    = 1.0 for component 1
    first real vector parameter    = 3.0 for component 3
    first real vector parameter    = 0.0 for component 4
    first real vector parameter    = 0.0 for component 5
    first real vector parameter    = 0.0 for component 6

### Dirichlet Conditions COMP6=1

The nodal displacements in the constraint sets specify the nodes where Dirichlet conditions are dictated. The nodal displacement in x-direction in the constraint set RNUM specifies the Dirichlet conditions of the RNUM-th component of the solution. Additionally the value of the nodal displacement in x-direction is the first real vector parameter for component RNUM.

Example: Create nodal constraint sets with:

        DFEG,P1,DISP,1,1
        DFEG,P1,DISP,5,2
        DFEG,P1,DISP,8,3

Then patvem creates:

    first real vector parameter = 1.0 for component 1
    first real vector parameter = 5.0 for component 2
    first real vector parameter = 8.0 for component 3

There is no integer vector parameter.

## REFERENCES

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

## SEE ALSO

VECFEM, vemcompile, vemrun, vemhint, mesh, vemexamples, vemdis, vempat, vepa97, vepa99, vemge2, vemgen(later).

## COPYRIGHTS

Program by C. Stocker, L. Grosz, K. Schreiber, 1989-96. Copyrights by Universitaet Karlsruhe 1989-1996. Copyrights by Lutz Grosz 1996. All rights reserved. More details see VECFEM.

by L. Grosz, Auckland , 6. June, 2000.