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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? meshread.cpp

?? FreeFem++可以生成高質(zhì)量的有限元網(wǎng)格。可以用于流體力學(xué)
?? 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() ;// 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费国产视频网站| 日精品一区二区三区| 日韩中文字幕不卡| 精品一区二区免费在线观看| 国产91精品免费| 97久久人人超碰| 欧美高清视频www夜色资源网| 2021国产精品久久精品| 亚洲免费av网站| 久久99这里只有精品| 99久久精品一区| 欧美一二三区精品| 国产精品国产三级国产aⅴ原创 | 国产高清在线精品| 9人人澡人人爽人人精品| 在线综合视频播放| 欧美极品美女视频| 日韩av一级片| voyeur盗摄精品| 日韩视频一区二区三区在线播放| 中文字幕一区二区三区视频 | 欧美va亚洲va国产综合| 国产精品久久久久久久久动漫 | 精品久久久网站| 亚洲乱码国产乱码精品精小说 | 精品国产99国产精品| 亚洲视频小说图片| 美女尤物国产一区| 91麻豆精品一区二区三区| 亚洲精品在线观看网站| 亚洲午夜电影在线观看| 国产aⅴ精品一区二区三区色成熟| 精品视频在线视频| 中文字幕人成不卡一区| 国精产品一区一区三区mba桃花 | 视频一区二区国产| av一区二区久久| 久久众筹精品私拍模特| 日韩成人午夜精品| 色狠狠综合天天综合综合| 中文av一区特黄| 韩国av一区二区三区四区| 337p亚洲精品色噜噜狠狠| 亚洲欧美经典视频| 波多野结衣亚洲一区| 久久久精品国产免大香伊| 欧美aⅴ一区二区三区视频| 欧美体内she精高潮| 亚洲三级在线免费观看| 高清国产一区二区| 国产亚洲精品资源在线26u| 久久国产综合精品| 91.com在线观看| 午夜国产不卡在线观看视频| 日本精品视频一区二区| 国产精品久久久久久久久免费桃花 | 国产一区二区三区观看| 欧美一区二区三区免费观看视频 | 欧美日韩和欧美的一区二区| 亚洲欧美另类久久久精品2019| 成人av电影免费在线播放| 中文字幕av一区 二区| 国产精品白丝av| 国产婷婷色一区二区三区在线| 九九**精品视频免费播放| 欧美大肚乱孕交hd孕妇| 免费成人在线观看| 精品久久久久久久久久久院品网| 青青草国产精品97视觉盛宴| 制服丝袜日韩国产| 日韩电影在线一区二区| 欧美一区二区三区四区视频| 亚洲va欧美va国产va天堂影院| 欧美日韩专区在线| 视频一区中文字幕国产| 91精品国产色综合久久久蜜香臀| 喷水一区二区三区| 久久这里只有精品6| 岛国一区二区在线观看| 最新国产の精品合集bt伙计| 97精品国产97久久久久久久久久久久 | 美女免费视频一区二区| 日韩视频免费观看高清完整版在线观看| 日韩精彩视频在线观看| 日韩美女天天操| 国产一区二区三区不卡在线观看| 国产欧美一区二区精品秋霞影院| 国产98色在线|日韩| 中文字幕在线一区二区三区| 91在线无精精品入口| 亚洲一区二区三区视频在线 | 五月激情综合网| 日韩一区二区电影网| 国产一区二区三区电影在线观看| 国产欧美日韩亚州综合| 99re成人在线| 亚洲国产精品综合小说图片区| 91精品国产综合久久久久久久| 韩国理伦片一区二区三区在线播放 | 日韩精品91亚洲二区在线观看 | 国产成人在线免费| 亚洲精品免费看| 91麻豆精品国产自产在线| 狠狠色丁香久久婷婷综合_中| 国产三级三级三级精品8ⅰ区| 99视频一区二区| 午夜亚洲国产au精品一区二区| 日韩精品一区二区三区四区视频| 国产夫妻精品视频| 亚洲激情图片qvod| 欧美电影精品一区二区| 99麻豆久久久国产精品免费| 亚洲电影激情视频网站| 久久美女高清视频| 91麻豆高清视频| 久久99久久精品| 亚洲精品一卡二卡| 精品国产髙清在线看国产毛片| a亚洲天堂av| 老司机免费视频一区二区三区| 国产精品国产自产拍在线| 91精品国产综合久久精品app| 成人免费高清在线观看| 亚洲成av人片| 国产精品妹子av| 欧美一二三四区在线| 99国产精品久久久久| 麻豆成人91精品二区三区| 中文字幕一区二区三区精华液| 日韩一区二区三区电影| 色婷婷av一区二区三区大白胸| 久久电影网站中文字幕| 亚洲香蕉伊在人在线观| 国产欧美综合在线| 日韩欧美三级在线| 欧美伊人精品成人久久综合97 | 亚洲男同性恋视频| 欧美大胆一级视频| 欧美亚洲一区二区三区四区| 国产成人精品免费在线| 奇米一区二区三区| 亚洲一区二区三区在线| 国产精品国产三级国产专播品爱网 | 亚洲国产wwwccc36天堂| 国产精品久久久久精k8| 日韩精品在线一区| 欧美日韩国产首页在线观看| 99久久夜色精品国产网站| 韩国三级电影一区二区| 免费精品99久久国产综合精品| 一个色妞综合视频在线观看| 中文字幕精品在线不卡| 精品久久久久久最新网址| 91麻豆精品91久久久久久清纯| 色婷婷久久99综合精品jk白丝| 国产福利一区二区| 国产一区二区在线免费观看| 日韩电影在线免费看| 午夜久久福利影院| 亚洲最大成人综合| 亚洲三级久久久| 国产精品福利av| 国产精品久久久久久亚洲伦| 国产午夜精品久久久久久免费视 | 日本网站在线观看一区二区三区| 亚洲精品欧美激情| 136国产福利精品导航| 国产精品毛片久久久久久| 久久久久久久久久看片| 精品少妇一区二区三区视频免付费| 777亚洲妇女| 欧美群妇大交群中文字幕| 欧美日韩国产乱码电影| 欧美性一区二区| 欧美视频中文字幕| 在线亚洲一区观看| 欧美自拍偷拍午夜视频| 欧美亚洲一区三区| 欧美探花视频资源| 欧美日韩精品一区二区三区蜜桃| 色哟哟亚洲精品| 91官网在线免费观看| 在线观看国产91| 欧美日韩aaa| 日韩午夜激情电影| 精品美女一区二区| 精品美女一区二区| 国产亚洲欧美激情| 国产精品蜜臀在线观看| 亚洲色图都市小说| 亚洲国产日韩综合久久精品| 亚洲高清视频在线| 日韩高清在线一区| 国模娜娜一区二区三区| 国产91综合一区在线观看| 91丨porny丨国产入口| 在线视频你懂得一区| 欧美日韩国产综合一区二区| 日韩欧美一区二区在线视频| 久久综合资源网|