setofe4.cpp

来自「FreeFem++可以生成高质量的有限元网格。可以用于流体力学」· C++ 代码 · 共 85 行

CPP
85
字号
// -*- Mode : c++ -*-//// SUMMARY  :      // USAGE    :        // ORG      : // AUTHOR   : Frederic Hecht// E-MAIL   : hecht@ann.jussieu.fr///*  This file is part of Freefem++  Freefem++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.  Freefem++  is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.  You should have received a copy of the GNU Lesser General Public License along with Freefem++; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */#include <iostream> using namespace std;#include "meshtype.h"#include "SetOfE4.h"namespace bamg { SetOfEdges4::SetOfEdges4(Int4 mmx,Int4 nnx)   {nx=nnx;    nbax=mmx;    NbOfEdges = 0;    tete= new Int4 [nx];    Int4 i=nx;    while (i--)      tete[i] = -1;// vide     Edges =new Int4Edge[nbax];   }     Int4 SetOfEdges4::find(Int4 ii,Int4 jj){   if (tete == 0 ) {    cerr <<"SetOfEdges4::find \nplus de tete de liste\n";    MeshError(888);}  Int4 n = tete[ Abs( ii ) % nx ];    while (n >= 0)     if (ii == Edges[n].i && jj == Edges[n].j)      return n;    else n = Edges[n].next;  return -1; // n'existe pas} Int4 SetOfEdges4::add(Int4 ii,Int4 jj){  if (tete == 0 ) {    cerr << "SetOfEdges4::add\n plus de tete de liste \n" << endl;    MeshError(888);}    Int4 h;  Int4 n = tete[ h = Abs( ii ) % nx ];  while (n >= 0)    if (ii == Edges[n].i && jj == Edges[n].j)            return n;   else n = Edges[n].next;  if (nbax <=NbOfEdges ) {    cerr << " SetOfEdges4::add\noverflow de la pile "  << nbax << " " << NbOfEdges << endl;    MeshError(888);}     Edges[NbOfEdges].i=ii;   Edges[NbOfEdges].j=jj;   Edges[NbOfEdges].next= tete[h];   tete[h] = NbOfEdges;   return NbOfEdges ++;}}  // end of namespace bamg 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?