📄 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);
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;
// more or less useless dummy (nobody creates a grid to get the points):
wzpoints Cogenerator::generatePoints(cogeometry g,wzmetric r,wzchart c) const
{
if(suppress_unreachable_warning) return new wzPointList();
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 2.0: <>D Delaunay grid with <> points");
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 2.0: <> ")<<"Grid";
wzgrid grid = generateGrid(g,r,c);
timed = (1000*(long int)((timeo=clock()) - time0))/CLOCKS_PER_SEC;
cogInfoGenerate(" created in <> ms;\n")<<(wzIndex)timed;
return grid;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -