⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainsgtest.html

📁 有限元学习研究用源代码(老外的),供科研人员参考
💻 HTML
字号:
<PRE>
#include <stdio.h>
#include <stdlib.h>
#include "sg-cog.hxx"
#include "segtest.cxx"
#include "gentest.cxx"
#include "outtest.cxx"
#include "sgtest.cxx"

int sgNx=2;
int sgNy=2;
int sgNz=2;

ibgFloat sgCxmin=0.0;
ibgFloat sgCxmax=1.0;
ibgFloat sgCymin=0.0;
ibgFloat sgCymax=1.0;
ibgFloat sgCzmin=0.0;
ibgFloat sgCzmax=1.0;

ibgFloat sgCx[sgCOORDMAX]={0.0, 0.5, 1.0};
ibgFloat sgCy[sgCOORDMAX]={0.0, 0.5, 1.0};
ibgFloat sgCz[sgCOORDMAX]={0.0, 0.5, 1.0};

int sgCMaterialTable[sgCMAX];
int sgFMaterialTable[sgFMAX];

wzRegion (*sgCMatFunction)(const cogPoint&p)=NULL;
wzFace (*sgFMatFunction)(const cogPoint&p)=NULL;

char sgFileName[500];

void sgCreateCoordinates(int n,ibgFloat coord[], ibgFloat min, ibgFloat max)
{
  int i;
  ibgFloat h;
  if (n&gt;sgCOORDMAX) { printf("E-Wrong, wrong coordinate number %d\n",n); exit(1);}
  if (n&lt;1)        { printf("E-Wrong, wrong coordinate number %d\n",n); exit(1);}

  if (n&gt;1) h=(max-min)/(double)(n-1);
  coord[0]=min;
  for(i=1;i&lt;n-1;i++)
       coord[i]=coord[i-1]+h;
  coord[n-1]=max;
}
#define generator_initialize_defined
void generator_initialize(int argc, char *argv[])
{
  int i;
  sgCMatFunction=0;
  sgFMatFunction=0;

  sprintf(sgFileName,"%s.%s",argv[0],"sgz");
  
  i=1;
  while (i&lt;argc)
    {
      if      (strcmp(argv[i],"-o")==0)     {  sprintf(sgFileName,"%s",argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-nx")==0)    {  sgNx=   atoi(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-ny")==0)    {  sgNy=   atoi(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-nz")==0)    {  sgNz=   atoi(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-xmin")==0)  {  sgCxmin=atof(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-xmax")==0)  {  sgCxmax=atof(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-ymin")==0)  {  sgCymin=atof(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-ymax")==0)  {  sgCymax=atof(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-zmin")==0)  {  sgCzmin=atof(argv[i+1]); i+=2;}
      else if (strcmp(argv[i],"-zmax")==0)  {  sgCzmax=atof(argv[i+1]); i+=2;}
      else {i++;}
    }
  
  sgCreateCoordinates(sgNx,sgCx,sgCxmin,sgCxmax);
  sgCreateCoordinates(sgNy,sgCy,sgCymin,sgCymax);
  sgCreateCoordinates(sgNz,sgCz,sgCzmin,sgCzmax);
  


  for(i=0;i&lt;sgFMAX;i++)
    sgFMaterialTable[i]=0;

  for(i=0;i&lt;sgCMAX;i++)
    sgCMaterialTable[i]=i,
    sgFMaterialTable[i]=i;

}

ibgcoarse test_coarse()
{
  char cmdname[64];
  int dim;
  
  printf("I-Data: cgrid size %d x %d x %d\n",
	 sgNx, sgNy, sgNz);
  printf("I-Data: cgrid volume [ %g , %g ] x [ %g x %g ] x [ %g x %g]",
	 sgCx[0],sgCx[sgNx-1],
	 sgCy[0],sgCy[sgNy-1],
	 sgCz[0],sgCz[sgNz-1]);
  
  if (sgNx&lt;1)  { printf("E-Wrong, wrong x coordinate number\n", sgNx); exit(1);}
  if (sgNy&lt;1)  { printf("E-Wrong, wrong y coordinate number\n", sgNy); exit(1);}
  if (sgNz&lt;1)  { printf("E-Wrong, wrong z coordinate number\n", sgNz); exit(1);}

  if (sgCx[0]&gt;sgCx[sgNx-1]){ printf("E-Wrong, wrong x coordinate values\n"); exit(1);}
  if (sgCy[0]&gt;sgCy[sgNy-1]){ printf("E-Wrong, wrong y coordinate values\n"); exit(1);}
  if (sgCz[0]&gt;sgCz[sgNz-1]){ printf("E-Wrong, wrong z coordinate values\n"); exit(1);}
  
  if (sgNx&gt;1) dim=1;
  if (sgNy&gt;1) dim=2;
  if (sgNz&gt;1) dim=3;
  
  ibgcoarse coarse = new ibgCoarseGrid(dim);
  if (sgNx&gt;1) coarse-&gt;setList(0,sgNx,sgCx);
  if (sgNy&gt;1) coarse-&gt;setList(1,sgNy,sgCy);
  if (sgNz&gt;1) coarse-&gt;setList(2,sgNz,sgCz);
  return coarse;
}

/* obsolete */

void   sgInitGrid(int argc, char *argv[]) 
{
	generator_initialize(argc,argv);
	output_initialize(argc,argv);
}
void   sgCreateGridAndDump(Cogeometry &amp;cog, ibgCriteria &amp;crit)
{
  test_segment_description test_segments;
  ibgcoarse box = test_coarse();
  ibggenerator gen = test_generator();
  wzgrid grid = (*gen)(&amp;cog,box,&amp;crit);
  for(int i=1;i&lt;sgCMAX;i++){
	if(wzRegion(i).valid()) wzRegion(i).material() = sgCMaterialTable[i];
  }
  test_output(&amp;cog,grid);
}
</PRE>





⌨️ 快捷键说明

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