亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? meshread.cpp

?? FreeFem++可以生成高質量的有限元網格。可以用于流體力學
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// -*- 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 <stdio.h>#include <string.h>#include <math.h>#include <time.h>#include "Meshio.h"#include "Mesh2.h"#include "QuadTree.h"#include "SetOfE4.h"#ifdef __MWERKS__#pragma optimization_level 2//#pragma inline_depth 1#endif#ifdef DRAWING1  extern bool withrgraphique ;#endifnamespace bamg {static const  Direction NoDirOfSearch=Direction();void Triangles::Read(MeshIstream & f_in,int Version,Real8 cutoffradian){  Real8 hmin = HUGE_VAL;// the infinie value   //  Real8 MaximalAngleOfCorner = 10*Pi/180;//   Int4 i;  Int4 dim=0;  Int4 hvertices =0;  Int4 ifgeom=0;  Metric M1(1);  if (verbosity>1)    cout << " -- ReadMesh " << f_in.CurrentFile  << " Version = " << Version << endl;  int field=0;  int showfield=0;  while (f_in.cm())     {        field=0;      char  fieldname[256];      if(f_in.eof()) break;      f_in.cm() >> fieldname ;;      if(f_in.eof()) break;      f_in.err() ;      if(verbosity>9)	cout <<  "    " << fieldname << endl;      if (!strcmp(fieldname,"MeshVersionFormatted") )         f_in >>   Version ;      else if(!strcmp(fieldname,"End"))         break;      else if (!strcmp(fieldname,"Dimension"))         {           f_in >>   dim ;           assert(dim ==2);         }      else if  (!strcmp(fieldname,"Geometry"))	{ 	  char * fgeom ;	  f_in >> fgeom;	  //	  if (cutoffradian>=0) => bug if change edit the file geometry 	  //  Gh.MaximalAngleOfCorner = cutoffradian;	  if (strlen(fgeom))	      Gh.ReadGeometry(fgeom);	  else 	    { 	      // include geometry 	      f_in.cm();	      Gh.ReadGeometry(f_in,fgeom);	    }	  Gh.AfterRead();	  ifgeom=1;	  delete [] fgeom;	}      else if (!strcmp(fieldname,"Identifier"))	{	  if (identity) delete [] identity;	  f_in >> identity;	}      else if (!strcmp(fieldname,"hVertices"))         { hvertices =1;	   Real4 h;           for (i=0;i< nbv;i++) {            f_in >>  h ;	    vertices[i].m = Metric(h);}         }      else if (!strcmp(fieldname,"Vertices"))         {            assert(dim ==2);           f_in >>   nbv ;	   if(verbosity>3)	     cout << "   Nb of Vertices = " << nbv << endl;	   nbvx=nbv;	   vertices=new Vertex[nbvx];	   assert(vertices);	   ordre=new (Vertex* [nbvx]);	   assert(ordre);	   	   nbiv = nbv;           for (i=0;i<nbv;i++) {             f_in >> 	       	 	 vertices[i].r.x >>  	           vertices[i].r.y >>              vertices[i].ReferenceNumber  ;             vertices[i].DirOfSearch =NoDirOfSearch;	           vertices[i].m=M1;	     vertices[i].color =0;}	   nbtx =  2*nbv-2; // for filling The Holes and quadrilaterals 	   triangles =new Triangle[nbtx];	   assert(triangles);	   nbt =0;         }      else if (!strcmp(fieldname,"Triangles"))	{ 	  if (dim !=2)	    cerr << "ReadMesh: Dimension <> 2" <<endl , f_in.ShowIoErr(0);	  if(! vertices || !triangles  || !nbv )	    cerr << "ReadMesh:Triangles before Vertices" <<endl,	      f_in.ShowIoErr(0);	  int NbOfTria;	  f_in >>  NbOfTria ;	  if(verbosity>3)	    cout << "   NbOfTria = " << NbOfTria << endl;	  if (nbt+NbOfTria >= nbtx)	    cerr << "ReadMesh: We must have 2*NbOfQuad + NbOfTria  = "		 << nbt + NbOfTria<<"  < 2*nbv-2 ="  << nbtx << endl,	      f_in.ShowIoErr(0); 	  //	  begintria = nbt;	  for (i=0;i<NbOfTria;i++)  	    {	      Int4 i1,i2,i3,iref;	      Triangle & t = triangles[nbt++];	      f_in >>  i1 >>  i2 >>   i3 >>   iref ;	      t = Triangle(this,i1-1,i2-1,i3-1);	      t.color=iref;	    }	  // endtria=nbt;	}      else if (!strcmp(fieldname,"Quadrilaterals"))        { 	  if (dim !=2)	    cerr << "ReadMesh: Dimension <> 2" <<endl , f_in.ShowIoErr(0);	  if(! vertices || !triangles  || !nbv )	    cerr << "ReadMesh:Quadrilaterals before Vertices" <<endl,	      f_in.ShowIoErr(0);	  f_in >>   NbOfQuad ;	  if(verbosity>3)	    cout << "   NbOfQuad= " << NbOfQuad << endl;	  if (nbt+2*NbOfQuad >= nbtx)	    cerr << "ReadMesh: We must have 2*NbOfQuad + NbOfTria  = "		 << nbt + 2*NbOfQuad <<"  < 2*nbv-2 ="  << nbtx << endl,	      f_in.ShowIoErr(0);	  //  beginquad=nbt;	  for (i=0;i<NbOfQuad;i++)  	    { 	      Int4 i1,i2,i3,i4,iref;	      Triangle & t1 = triangles[nbt++];	      Triangle & t2 = triangles[nbt++];	      f_in >>  i1 >>  i2 >>   i3 >> i4 >>    iref ;	      t1 = Triangle(this,i1-1,i2-1,i3-1);	      t1.color=iref;	      t2 = Triangle(this,i3-1,i4-1,i1-1);	      t2.color=iref;	      t1.SetHidden(OppositeEdge[1]); // two time  because the adj was not created 	      t2.SetHidden(OppositeEdge[1]); 	    }	  // endquad=nbt;	}      else if (!strcmp(fieldname,"VertexOnGeometricVertex"))	{            f_in  >> NbVerticesOnGeomVertex ; 	   if(verbosity>5)	     cout << "   NbVerticesOnGeomVertex = "   << NbVerticesOnGeomVertex << endl		  << " Gh.vertices " << Gh.vertices << endl;	   if( NbVerticesOnGeomVertex) 	     {	       VerticesOnGeomVertex= new  VertexOnGeom[NbVerticesOnGeomVertex] ;	       if(verbosity>7)		 cout << "   VerticesOnGeomVertex = " << VerticesOnGeomVertex << endl		      << "   Gh.vertices " << Gh.vertices << endl;	       assert(VerticesOnGeomVertex);	       for (Int4 i0=0;i0<NbVerticesOnGeomVertex;i0++)  		 { 		   Int4  i1,i2;		   //VertexOnGeom & v =VerticesOnGeomVertex[i0];		   f_in >>  i1 >> i2 ;		   VerticesOnGeomVertex[i0]=VertexOnGeom(vertices[i1-1],Gh.vertices[i2-1]);		 }	     }	 }      else if (!strcmp(fieldname,"VertexOnGeometricEdge"))         {            f_in >>  NbVerticesOnGeomEdge ; 	   if(verbosity>3)	     cout << "   NbVerticesOnGeomEdge = " << NbVerticesOnGeomEdge << endl;	   if(NbVerticesOnGeomEdge) 	     {	       VerticesOnGeomEdge= new  VertexOnGeom[NbVerticesOnGeomEdge] ;	       assert(VerticesOnGeomEdge);	       for (Int4 i0=0;i0<NbVerticesOnGeomEdge;i0++)  		 { 		   Int4  i1,i2;		   Real8 s;		   //VertexOnGeom & v =VerticesOnGeomVertex[i0];		   f_in >>  i1 >> i2  >> s;		   VerticesOnGeomEdge[i0]=VertexOnGeom(vertices[i1-1],Gh.edges[i2-1],s);		 }	     }         }      else if (!strcmp(fieldname,"Edges"))	{           Int4 i,j, i1,i2;          f_in >>  nbe ;          edges = new Edge[nbe];	  if(verbosity>5)	    cout << "     Record Edges: Nb of Edge " << nbe << " edges " <<  edges << endl;          assert(edges);	  Real4 *len =0;          if (!hvertices) 	    {	      len = new Real4[nbv];	      for(i=0;i<nbv;i++)		len[i]=0;	    }          for (i=0;i<nbe;i++) 	    {	      f_in  >> i1  >> i2  >> edges[i].ref ;                 	      assert(i1 >0 && i2 >0);	      assert(i1 <= nbv && i2 <= nbv);	      i1--;	      i2--;	      edges[i].v[0]= vertices +i1;	      edges[i].v[1]= vertices +i2;	      edges[i].adj[0]=0;	      edges[i].adj[1]=0;	      R2 x12 = vertices[i2].r-vertices[i1].r;	      Real8 l12=sqrt( (x12,x12));        	      if (!hvertices) {		vertices[i1].color++;		vertices[i2].color++;		len[i1]+= l12;		len[i2] += l12;}	      hmin = Min(hmin,l12);	    }	  // definition  the default of the given mesh size           if (!hvertices) 	    {            for (i=0;i<nbv;i++) 	      if (vertices[i].color > 0) 		vertices[i].m=  Metric(len[i] /(Real4) vertices[i].color);	      else 		vertices[i].m=  Metric(hmin);	      delete [] len;	    }	  if(verbosity>5)	    cout << "     hmin " << hmin << endl;	  // construction of edges[].adj 	    for (i=0;i<nbv;i++) 	      vertices[i].color = (vertices[i].color ==2) ? -1 : -2;	    for (i=0;i<nbe;i++)	      for (j=0;j<2;j++) 		{ 		  Vertex *v=edges[i].v[j];		  Int4 i0=v->color,j0;		  if(i0==-1)		    v->color=i*2+j;		  else if (i0>=0) {// i and i0 edge are adjacent by the vertex v		    j0 =  i0%2;		    i0 =  i0/2;		    assert( v ==  edges[i0 ].v[j0]);		    edges[i ].adj[ j ] =edges +i0;		    edges[i0].adj[ j0] =edges +i ;		    assert(edges[i0].v[j0] == v);		    //	    if(verbosity>8)		    //  cout << " edges adj " << i0 << " "<< j0 << " <-->  "  << i << " " << j << endl;		      v->color = -3;}		}	}	/*   ne peut pas marche car il n'y a pas de flag dans les aretes du maillages       else if (!strcmp(fieldname,"RequiredEdges"))        {           int i,j,n;          f_in  >> n ;          for (i=0;i<n;i++) {                 f_in  >>  j ;            assert( j <= nbe );            assert( j > 0 );            j--;            edges[j].SetRequired();  }      }*/	      else if (!strcmp(fieldname,"EdgeOnGeometricEdge"))	{ 	  assert(edges);	  int i1,i2,i,j;	  f_in >> i2 ;	  if(verbosity>3)	    cout << "     Record EdgeOnGeometricEdge: Nb " << i2 <<endl;	  for (i1=0;i1<i2;i1++)	    {	      f_in  >> i >> j ;	      if(!(i>0 && j >0 && i <= nbe && j <= Gh.nbe))		{		  cerr << "      Record EdgeOnGeometricEdge i=" << i << " j = " << j;		  cerr << " nbe = " << nbe << " Gh.nbe = " <<  Gh.nbe << endl;		  cerr << " We must have : (i>0 && j >0 && i <= nbe && j <= Gh.nbe) ";		  cerr << " Fatal error in file " << name << " line " << f_in.LineNumber << endl;		  MeshError(1);		}					      edges[i-1].on = Gh.edges + j-1;	    }	  //	  cout << "end EdgeOnGeometricEdge" << endl;	}      else if (!strcmp(fieldname,"SubDomain") || !strcmp(fieldname,"SubDomainFromMesh") )	{ 	  	  f_in >> NbSubDomains ;	  subdomains = new SubDomain [ NbSubDomains ];	    for (i=0;i< NbSubDomains;i++)	      { Int4 i3,head,sens;	      f_in  >>  i3 >>	head >> sens  >> subdomains[i].ref ;		assert (i3==3);		head --;		assert(head < nbt && head >=0);		subdomains[i].head = triangles+head;			      }	}      else	{ // unkown field	  field = ++showfield;	  if(showfield==1) // just to show one time 	    if (verbosity>5)	      cout << "     Warning we skip the field " << fieldname << " at line " << f_in.LineNumber << endl;	}      showfield=field; // just to show one time     }        if (ifgeom==0)      {	if (verbosity)	  cout  << " ## Warning: Mesh without geometry we construct a geometry (theta =" 		<< cutoffradian*180/Pi << " degres )" << endl;	ConsGeometry(cutoffradian);		Gh.AfterRead();      }	  }void Triangles::Read_am_fmt(MeshIstream & f_in){  Metric M1(1);  if (verbosity>1)    cout << " -- ReadMesh .am_fmt file " <<  f_in.CurrentFile  << endl;   	     Int4 i;     f_in.cm() >> nbv >> nbt ;     if (verbosity>3)       cout << "    nbv = " << nbv  << " nbt = " << nbt << endl;     f_in.eol() ;//      nbvx = nbv;     nbtx =  2*nbv-2; // for filling The Holes and quadrilaterals      triangles =new Triangle[nbtx];     assert(triangles);     vertices=new Vertex[nbvx];     ordre=new (Vertex* [nbvx]);          for (     i=0;i<nbt;i++)       {	 Int4 i1,i2,i3;	 f_in >>  i1 >>  i2 >>   i3 ;	 triangles[i]  = Triangle(this,i1-1,i2-1,i3-1);	        }      f_in.eol() ;// 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av一区二区三区| 奇米精品一区二区三区在线观看一| 亚洲综合激情小说| 国产精品一卡二卡在线观看| 欧美精品自拍偷拍| 国产精品福利一区二区三区| 久久国产婷婷国产香蕉| 91在线观看视频| 国产精品网曝门| 国内精品免费在线观看| 欧美美女一区二区三区| 一区二区三区免费| 成人av电影免费观看| 久久精品人人做人人爽97| 免费在线观看成人| 欧美日韩免费不卡视频一区二区三区| 国产精品伦理在线| 国产成人在线网站| 久久综合av免费| 精品一区二区影视| 欧美精品欧美精品系列| 亚洲国产欧美在线人成| 色婷婷久久久综合中文字幕| 一色屋精品亚洲香蕉网站| 国产成人精品亚洲777人妖| 精品福利av导航| 久久成人久久鬼色| 精品国产露脸精彩对白| 久久66热偷产精品| 久久一区二区视频| 精品一区二区三区不卡 | 久久综合色综合88| 蜜桃视频免费观看一区| 91精品国模一区二区三区| 亚洲mv大片欧洲mv大片精品| 欧美精品免费视频| 日韩电影在线免费看| 欧美一区二区福利在线| 国精产品一区一区三区mba桃花| 欧美大片免费久久精品三p| 久久福利视频一区二区| 国产蜜臀av在线一区二区三区| 成人中文字幕在线| 亚洲蜜臀av乱码久久精品 | 国产成人亚洲综合a∨婷婷图片 | 6080亚洲精品一区二区| 日本一不卡视频| 26uuu色噜噜精品一区| 国产精品自拍网站| 1024亚洲合集| 欧美日韩在线三区| 美腿丝袜在线亚洲一区| 久久久精品2019中文字幕之3| 成人免费视频一区二区| 亚洲精品国产成人久久av盗摄 | 日韩一区二区精品葵司在线 | 日韩精品电影在线观看| 日韩美女主播在线视频一区二区三区| 精品一区二区三区在线视频| 国产精品天干天干在线综合| 色偷偷成人一区二区三区91| 婷婷开心久久网| 久久久久久**毛片大全| 欧美在线高清视频| 久久99久久99精品免视看婷婷| 中文字幕乱码久久午夜不卡 | 91麻豆精品一区二区三区| 香蕉乱码成人久久天堂爱免费| 精品国产电影一区二区| 91日韩精品一区| 久久99精品国产麻豆不卡| 国产精品久久久久久妇女6080| 欧美性感一区二区三区| 国产麻豆精品视频| 亚洲国产一二三| 中文乱码免费一区二区| 欧美日韩精品专区| 99精品欧美一区二区三区小说| 日本视频一区二区三区| 国产精品久久综合| 26uuu国产电影一区二区| 色狠狠色噜噜噜综合网| 国产精品99久久久久久久女警 | 国产福利电影一区二区三区| 亚洲一区中文在线| 国产精品女同互慰在线看| 日韩欧美综合在线| 欧美三片在线视频观看| www.欧美精品一二区| 精品亚洲国内自在自线福利| 一区二区国产视频| 国产精品三级av| 久久综合丝袜日本网| 欧美日韩国产天堂| 色久综合一二码| 风间由美一区二区三区在线观看| 青青草精品视频| 亚洲成人免费av| 亚洲欧美电影院| 1024成人网| 中文字幕中文字幕在线一区| 久久久精品国产免费观看同学| 日韩一级精品视频在线观看| 欧美日韩精品一区二区三区| 99国产精品视频免费观看| 成人av在线影院| 大陆成人av片| 成人一区二区视频| 不卡av电影在线播放| 国产jizzjizz一区二区| 国产成人三级在线观看| 国产中文字幕精品| 国产一区欧美二区| 国产麻豆精品theporn| 国产精品一二三区| 国产精品综合二区| 岛国av在线一区| av中文字幕在线不卡| 91在线一区二区| 色综合久久久久久久| 在线免费观看一区| 欧美日韩国产一区| 日韩一区二区在线看片| 精品久久一区二区三区| www日韩大片| 国产精品全国免费观看高清| 中文字幕亚洲精品在线观看| 中文字幕在线不卡一区二区三区| 最新成人av在线| 亚洲国产毛片aaaaa无费看| 亚洲成va人在线观看| 美女视频黄频大全不卡视频在线播放| 老司机一区二区| 不卡欧美aaaaa| 欧美日韩综合不卡| 欧美videossexotv100| 久久久国产午夜精品| 亚洲激情欧美激情| 青娱乐精品视频| 成人性视频网站| 欧美日韩国产一区| 久久美女高清视频| 综合在线观看色| 免费成人在线播放| 成人动漫一区二区三区| 欧美日韩一区二区三区在线| 欧美电影免费观看高清完整版在 | 国产精品资源在线| 色诱视频网站一区| 日韩你懂的在线观看| 最新国产精品久久精品| 日本在线观看不卡视频| 成人少妇影院yyyy| 91精品国产综合久久精品图片| 国产欧美日产一区| 亚洲成av人片一区二区梦乃| 国产激情91久久精品导航 | 99国产精品久| 精品捆绑美女sm三区| 亚洲狠狠丁香婷婷综合久久久| 蜜桃av噜噜一区二区三区小说| 99re热这里只有精品免费视频| 欧美一区欧美二区| 亚洲欧美精品午睡沙发| 国内精品伊人久久久久av影院| 欧美日精品一区视频| 国产精品欧美极品| 国产一区二区91| 91精品国产免费| 中文字幕一区二区三| 久久99九九99精品| 在线不卡免费欧美| 亚洲男人的天堂av| av在线这里只有精品| 亚洲精品在线观看网站| 日韩精品国产精品| 欧美午夜在线一二页| 亚洲视频 欧洲视频| 国产成人免费视频精品含羞草妖精| 51精品视频一区二区三区| 亚洲丝袜精品丝袜在线| 成人深夜在线观看| 国产色产综合色产在线视频| 蜜桃视频在线一区| 欧美精品123区| 亚洲黄色片在线观看| 91美女在线观看| 中文字幕中文字幕中文字幕亚洲无线| 国产成人三级在线观看| 久久精品人人做人人爽97| 久久99久久99精品免视看婷婷| 日韩一级片网站| 六月丁香综合在线视频| 日韩午夜精品电影| 美女久久久精品| 日韩欧美aaaaaa| 狠狠色狠狠色综合系列| 26uuu色噜噜精品一区二区| 国产露脸91国语对白| 久久久久久免费网|