man fem_FEM (Fonctions bibliothèques) - this class drives the resolution of the pde using the Finite Element Method.

NAME

fem::FEM - this class drives the resolution of the pde using the Finite Element Method.

SYNOPSIS



#include <femSolver.hpp>

Public Member Functions



DECLARE_TYPE (femMesh::femPoint, femPoint)

Typedefs. DECLARE_TYPE (femMesh::femTriangle, femTriangle)

DECLARE_TYPE (creal *, cmatptr)

DECLARE_TYPE (float *, matptr)



FEM (femMeshPtr=0, int quadra=0)

default constructor ~FEM ()

destructor float solvePDE (fcts *param, int how)

solve the PDE creal deriv (int m, creal *f, int ksolv, int i)

creal convect (creal *f, creal *u1, creal *u2, float dt, int i)

creal rhsConvect (creal *f, creal *u1, creal *u2, float dt, int i)

creal fctval (creal *f, float x, float y)

int getregion (int k)

creal gfemuser (creal what, creal *f, int i)

creal P1ctoP1 (creal *f, int i)

creal prodscalar (creal *f, creal *g)

creal ginteg (int, int, int, creal *, creal *, int)

creal binteg (int, int, int, creal *, creal *, int)

void initvarmat (int how, int flagcomplexe, int N, fcts *param)

void assemble (int how, int flagcomplexe, int N, int k, creal *a, creal *b, fcts *param)

void solvevarpde (int N, fcts *param, int how)

Public Attributes

float * normlx

float * normly

Detailed Description

this class drives the resolution of the pde using the Finite Element Method.

Author: Christophe Prud'homme <Christophe.Prudhomme@ann.jussieu.fr>

See also: femMesh

Version: #

Id.RS 4 femSolver.hpp,v 1.2 2001/07/12 14:11:57 prudhomm Exp

#

Member Function Documentation

int fem::FEM::getregion (int k)

Returns: the ngt of a femTriangle to which belongs vertex k

1277 {
1278   return __mesh->ngt[listHead[i]];
1279 
1280 }

float fem::FEM::solvePDE (fcts * param, int how)

solve the PDE

Parameters: param contain all the possible data for computation

how defines if the P1 quadrature

1001 {
1002   long            nsl = ((long) ns) * (2 * ((long) bdth) + 1);
1003   int             factorize = 1;
1004 
1005   if (how > nhowmax)
1006     erreur ('Too many linear systems');
1007   if (how < 0)
1008      {
1009        factorize = 0;
1010        how = -how;
1011        if (((how > nhow1) && (N == 1)) || ((how > nhow2) && (N == 2)))
1012           {
1013             sprintf (errbuf, 'solve(..,'-%d') refers to an inexistant system', how);
1014             erreur (errbuf);
1015           }
1016      }
1017   if (((how > nhow1) && (N == 1)) || ((how > nhow2) && (N == 2)))
1018      {
1019        switch (N)
1020           {
1021           case 1:
1022             if (flag.complexe)
1023               a1c[nhow1++] = new creal[nsl];
1024             else
1025               a1[nhow1++] = new float[nsl];
1026 
1027             break;
1028           case 2:
1029             a2[nhow2++].init (nsl);
1030             break;
1031           }
1032      }
1033   if (flag.complexe)
1034      {
1035        if (N == 1)
1036          return pdeian (a1c[how - 1], param->sol1c, param->f1c, param->g1c, param->p1c, param->b1c,
1037                         param->nuxx1c, param->nuxy1c, param->nuyx1c, param->nuyy1c, param->a11c,
1038                         param->a21c, param->c1c, factorize);
1039        else if (N == 2)
1040          return pdeian (a2[how - 1], param->sol2, param->f2, param->g2, param->p2, param->b2,
1041                         param->nuxx2, param->nuxy2, param->nuyx2, param->nuyy2, param->a12,
1042                         param->a22, param->c2, factorize); 
1043        else
1044          return -1.F;
1045 
1046      }
1047   else
1048      {
1049        if (N == 1)
1050          return pdeian (a1[how - 1], param->sol1, param->f1, param->g1, param->p1, param->b1,
1051                         param->nuxx1, param->nuxy1, param->nuyx1, param->nuyy1, param->a11,
1052                         param->a21, param->c1, factorize);
1053        else if (N == 2)
1054          return pdeian (a2[how - 1], param->sol2, param->f2, param->g2, param->p2, param->b2,
1055                         param->nuxx2, param->nuxy2, param->nuyx2, param->nuyy2, param->a12,
1056                         param->a22, param->c2, factorize); 
1057        else
1058          return -1.F;
1059      }
1060 }

Author

Generated automatically by Doxygen for FreeFem from the source code.