# VECFEM3 Reference Manual: vemu04

Type: FORTRAN routine

## NAME

vemu04 - integral of a function C over inner elements

## SYNOPSIS

CALL VEMU04(
  T, LCU, CU, LU, U, LIVEM, IVEM, LNEK, NEK, LRPARM, RPARM, LIPARM, IPARM, LDNOD, DNOD, LRDPRM, RDPARM, LIDPRM, IDPARM, LNODN, NODNUM, LNOD, NOD, LNOPRM, NOPARM, LBIG, RBIG, IBIG, USERC)
INTEGER
  LCU, LU, 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
  T, CU(LCU), U(LU), RPARM(LRPARM), RDPARM(LRDPRM), NOD(LDNOD), NOPARM(LNOPRM), RBIG(LBIG)
EXTERNAL
  USERC

## PURPOSE

vemu04 is a routine to integrate a NC-valued function C over the inner elements of the given finite element mesh. C depends on the location and the NK-valued input solution U and its derivative. U is given at the global nodes of the FEM mesh. vemu04 can be used to compute the flow through the elements or the work done by the displacements U on the elements in structural analysis problems. The results can be handed over to a standard postprocessor which processes element results (see veid99, vepa99).

## ARGUMENTS

T double precision, scalar, input, global
  Real number (e.g. current time).
LCU integer, scalar, input, local
  Length of vector CU, LCU>=NC*NINE, where NINE is the total number of inner elements on the process MYPROC.
CU double precision, array: CU(LCU), output, local
  The integrals of the function C over the inner elements. The integrals of the NC components of the function C are stored separately for each individual group. CU(ADDCU(G)-1+CU1(G)*(j-1)+i) is the integral of the j-th component of C over the i-th element on the process MYPROC in group G. The numbers ADDCU and CU1 are returned in IVEM.
LU integer, scalar, input, local
  Length of solution vector U, LU >=LM.
U double precision, array: U(LU), input, local
  The input solution vector at the global nodes. U(i) is the value of the input solution at the global node i+PTRMBK(MYPROC), see vemdis.
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 | IVEM, U or CU is too small.
    99 | fatal error.

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

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

  (33)=NC, input, global
    Number of components of function C.
  (35)=ORDER, input, local
    Order of the integration formulas to compute the integral of C, 0<ORDER<19. ORDER gives the maximal degree of the polynomials which will be integrated exactly.
  (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 vemu04 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, local
    Start of mesh informations, see mesh.
  (MESH+GINFO+GINFO1*(G-1)+17)=ADDCU, output, local
    Start address of the integrals of function C for group G in CU.
  (MESH+GINFO+GINFO1*(G-1)+18)=CU1, output, local
    Leading dimension of the integrals of function C for group G, normally CU1=NE.
  (MESH+GINFO+GINFO1*(G-1)+19)=NCG, output, local
    Number of integrals of function C for group G, normally NCG=N for inner elements and NCG=0 for noninner elements.
LNEK integer, scalar, input, local
  Length of the element array.
NEK integer, array: NEK(LNEK), input, 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, local
  Real parameter array, see mesh.
LIPARM integer, scalar, input, local
  Length of the integer parameter array.
IPARM integer, array: IPARM(LIPARM), input, 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), input, 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, 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, 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, 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, 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. 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.
USERC external
  Name of the subroutine in which the function C is described, see userc.

## EXAMPLE

See vemexamples. To compute the sum SUM of the integrals of C over all inner elements of one individual process the following statements can be used:

        DO 10 G=1,NGROUP
           NE   =IVEM(MESH+GINFO+GINFO1*(G-1)   )
           ADDCU=IVEM(MESH+GINFO+GINFO1*(G-1)+17)
           CU1  =IVEM(MESH+GINFO+GINFO1*(G-1)+18)
           NCG  =IVEM(MESH+GINFO+GINFO1*(G-1)+19)
           IF (CU1.GE.NE) THEN
             DO 20 I=1,NCG
               DO 20 Z=1,NE
                 SUM(I)=SUM(I)+CU(ADDCU-1+CU1*(I-1)+Z)
    20       CONTINUE
           ENDIF
    10   CONTINUE

## METHOD

The integration is executed by integration formulas. They are selected in the reference element by the input parameter ORDER and transformed to the elements by interpolation of the assigned geometrical nodes. To compute the values of U and its derivatives at the integration nodes, the values of U at the global nodes are interpolated by a polynomial.

## REFERENCES

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

## SEE ALSO

VECFEM, vemcompile, vemrun, vemhint, mesh, vemexamples, vemdis, userc, vemu03, vemu05, vemu06.

## COPYRIGHTS

Program by L. Grosz, C. Roll, P. Sternecker, 1989-1996. 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.