# VECFEM3 Reference Manual: vemu08

Type: FORTRAN routine

## NAME

vemu08 - sets the inital solution at the global nodes

## SYNOPSIS

CALL VEMU08(
  T, 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, USERU0)
INTEGER
  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, U(LU), RPARM(LRPARM), RDPARM(LRDPRM), NOD(LDNOD), NOPARM(LNOPRM), RBIG(LBIG)
EXTERNAL
  USERU0

## PURPOSE

vemu08 is a routine to set the NK components of the initial guess for the nonlinear solver veme02 or to set the initial solution for nonsteady problems vemp02. The initial solution may depend on the location and the node parameters. vemu06 is an extension of vemu08.

## ARGUMENTS

T

double precision, scalar, input, global
  Real number (e.g. initial time).
LU
integer, scalar, input, local
  Length of vector LU, LU >=LM.
U
double precision, array: U(LU), output, local
  The inital solution at the global nodes. U(i) is the value of the inital 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 or U 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.

(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 vemu08 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.
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. 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.
USERU0
external
  Name of the subroutine in which the initial solution is described.

## DEFINITION

The statements defining the initial solution have to be entered into the following subroutine frame USERU0:

          SUBROUTINE USERU0(T,NE,L,DIM,X,NOP,NOPARM,COMPU,U0)
          INTEGER          NE,L,DIM,NOP,COMPU
          DOUBLE PRECISION T,X(L,DIM),NOPARM(L,NOP),U0(NE)
          ...
          IF (COMPU.EQ.1) THEN
            DO 10 Z=1,NE
              U0(Z)=...
      10    CONTINUE
          ENDIF
          ...
          RETURN
          END

where T is the real value T of the vemu08 call, X denotes a list of NE points in the domain defined by the FEM mesh and NOPARM the interpolation of the node parameters onto these nodes. The output array U0 contains the values of the component COMPU of the initial solution at the given points. The routine is called for all components COMPU=1,NK and all element groups.

## EXAMPLE

See vemexamples.

## METHOD

The statements defining the input solution in the routine USERU0 are evaluated at the nodes of the proposal functions. The value of U at a global node is the arithmetic mean of all evaluations on all elements containing this node.

## REFERENCES

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

## SEE ALSO

VECFEM, vemcompile, vemrun, vemhint, mesh, vemexamples, vemdis, veme00, veme02, vemp02, vemu03, vemu04, 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.