#include <femSolver.hpp>
Public Member Functions | |
| DECLARE_TYPE (femMesh::femPoint, femPoint) | |
| 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 |
|
|
01277 {
01278 return __mesh->ngt[listHead[i]];
01279
01280 }
|
|
||||||||||||
|
solve the PDE
01001 {
01002 long nsl = ((long) ns) * (2 * ((long) bdth) + 1);
01003 int factorize = 1;
01004
01005 if (how > nhowmax)
01006 erreur ("Too many linear systems");
01007 if (how < 0)
01008 {
01009 factorize = 0;
01010 how = -how;
01011 if (((how > nhow1) && (N == 1)) || ((how > nhow2) && (N == 2)))
01012 {
01013 sprintf (errbuf, "solve(..,'-%d') refers to an inexistant system", how);
01014 erreur (errbuf);
01015 }
01016 }
01017 if (((how > nhow1) && (N == 1)) || ((how > nhow2) && (N == 2)))
01018 {
01019 switch (N)
01020 {
01021 case 1:
01022 if (flag.complexe)
01023 a1c[nhow1++] = new creal[nsl];
01024 else
01025 a1[nhow1++] = new float[nsl];
01026
01027 break;
01028 case 2:
01029 a2[nhow2++].init (nsl);
01030 break;
01031 }
01032 }
01033 if (flag.complexe)
01034 {
01035 if (N == 1)
01036 return pdeian (a1c[how - 1], param->sol1c, param->f1c, param->g1c, param->p1c, param->b1c,
01037 param->nuxx1c, param->nuxy1c, param->nuyx1c, param->nuyy1c, param->a11c,
01038 param->a21c, param->c1c, factorize);
01039 else if (N == 2)
01040 return pdeian (a2[how - 1], param->sol2, param->f2, param->g2, param->p2, param->b2,
01041 param->nuxx2, param->nuxy2, param->nuyx2, param->nuyy2, param->a12,
01042 param->a22, param->c2, factorize);
01043 else
01044 return -1.F;
01045
01046 }
01047 else
01048 {
01049 if (N == 1)
01050 return pdeian (a1[how - 1], param->sol1, param->f1, param->g1, param->p1, param->b1,
01051 param->nuxx1, param->nuxy1, param->nuyx1, param->nuyy1, param->a11,
01052 param->a21, param->c1, factorize);
01053 else if (N == 2)
01054 return pdeian (a2[how - 1], param->sol2, param->f2, param->g2, param->p2, param->b2,
01055 param->nuxx2, param->nuxy2, param->nuyx2, param->nuyy2, param->a12,
01056 param->a22, param->c2, factorize);
01057 else
01058 return -1.F;
01059 }
01060 }
|