📄 cogenerator.cxx
字号:
#include "cogenerator.hxx"#include "cogenoctree.hxx"#include "cogenchart.hxx"#include "cogenrefine.hxx"#include "cogenpoints.hxx"#include "cogencomposite.hxx"#include "cog1d.hxx"#include "cogwarnings.hxx"#include <time.h>cogenOctree Cogenerator::cogenoctree() const {return 0;}cogenRefine Cogenerator::cogenrefine() const {return 0;}cogenComposite Cogenerator::cogencomposite() const {return 0;}cogenChart Cogenerator::cogenchart() const {return 0;}cogenPoints Cogenerator::cogenpoints() const {return 0;}cogenOctree CogenDecorator::cogenoctree() const {return original->cogenoctree();}cogenRefine CogenDecorator::cogenrefine() const {return original->cogenrefine();}cogenComposite CogenDecorator::cogencomposite() const {return original->cogencomposite();}cogenChart CogenDecorator::cogenchart() const {return original->cogenchart();}cogenPoints CogenDecorator::cogenpoints() const {return original->cogenpoints();}wzgrid Cogenerator::generateGrid(cogeometry g,wzpoints plist) const{ plist->computeBox(); wzdelaunayGenerator gen = new wzDelaunayGenerator(plist->boxDim,plist->spaceDim, plist->fDim); gen->Delaunay(plist,g); return gen->grid();}wzgrid Cogenerator::generateGrid(cogeometry g,wzmetric r,wzchart c) const{ ((Cogenerator*) this)->endInitialization(); wzpoints plist = generatePoints(g,r,c); return generateGrid(g,plist);}CogenDecorator::CogenDecorator(cogenerator content):original(content){ initialize();}wzgrid Cogenerator::generateGrid(wzpoints plist) const{return generateGrid(new Cogeometry(),plist);}wzgrid Cogenerator::generateGrid(char* pointlistfile) const{ wzPointList plist(pointlistfile); wzgrid g = generateGrid(&plist); return g;}static int suppress_unreachable_warning = 1;wzpoints Cogenerator::generatePoints(cogeometry g,wzmetric r,wzchart c) const{ if(suppress_unreachable_warning) return new wzPointList();// more or less useless dummy (nobody creates a grid to get the points): wzIndex i,j; wzPoint *n; wzgrid grid = generateGrid(g,r,c); wzpoints p = new wzPointList(); cogLoop(grid->points,i){ j = p->create(); n = &(p->Point[j]); *n = grid->Point[i]; } return p;}extern int ibgNumberOfFaceCells;void ibgDistinguishOutsideInside(wzgrid g, wzRegion out, wzRegion ins, wzRegion undef);wzgrid Cogenerator::generateGrid1(wzpoints plist) const{ clock_t time0=clock(); clock_t timeo; long int timed; wzIndex p; cogeometry g = new Cogeometry0D; cogInfoGenerate("\nCOG <>: <>D Delaunay grid with <> points")<<cogVersion; wzRangeLoop(*plist,p){ g->Point(plist->Point[p]); } cogInfoGenerate<<plist->spaceDim, plist->length(); wzdelaunayGenerator gen = new wzDelaunayGenerator(plist->boxDim,plist->spaceDim); // wzgrid grid = new wzGrid(plist->spaceDim,plist->spaceDim); // grid->Delaunay(plist,g); gen->Delaunay(plist); timed = (1000*(long int)((timeo=clock()) - time0))/CLOCKS_PER_SEC; cogInfoGenerate(" created in <> ms;") <<(wzIndex)timed; ibgDistinguishOutsideInside(gen->grid(),1,2,3); ibgFaceOutside = 0; ibgSetDefaultFace=1; gen->createFaces(g); ibgFaceOutside = 1; ibgSetDefaultFace=0; timed = (1000*(long int)((clock()) - timeo))/CLOCKS_PER_SEC; cogInfoGenerate("\nboundary detection: <> face cells created in <> ms;") <<ibgNumberOfFaceCells,(wzIndex)timed; return gen->grid();}wzgrid Cogenerator::operator()(cogeometry g,wzmetric r,wzchart c)const{ clock_t time0=clock(); // clock_t timeo; long int timed; cogInfoGenerate("\nCOG <>: <> ")<<cogVersion,"Grid"; wzgrid grid = generateGrid(g,r,c); timed = (1000*(long int)((clock()) - time0))/CLOCKS_PER_SEC; cogInfoGenerate(" created in <> ms;\n")<<(wzIndex)timed; return grid;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -