本文整理汇总了C++中CGeometry::SetVertex方法的典型用法代码示例。如果您正苦于以下问题:C++ CGeometry::SetVertex方法的具体用法?C++ CGeometry::SetVertex怎么用?C++ CGeometry::SetVertex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGeometry
的用法示例。
在下文中一共展示了CGeometry::SetVertex方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[]) {
/*--- Variable definitions ---*/
char file_name[200];
unsigned short nZone = 1;
#ifndef NO_MPI
#ifdef WINDOWS
MPI_Init(&argc,&argv);
#else
MPI::Init(argc, argv);
#endif
#endif
/*--- Definition of the config problem ---*/
CConfig *config;
if (argc == 2) config = new CConfig(argv[1], SU2_MAC, ZONE_0, nZone, VERB_HIGH);
else { strcpy (file_name, "default.cfg"); config = new CConfig(file_name, SU2_MAC, ZONE_0, nZone, VERB_HIGH); }
/*--- Definition of the Class for the geometry ---*/
CGeometry *geometry; geometry = new CGeometry;
geometry = new CPhysicalGeometry(config, ZONE_0, nZone);
/*--- Perform the non-dimensionalization, in case any values are needed ---*/
config->SetNondimensionalization(geometry->GetnDim(), ZONE_0);
cout << endl <<"----------------------- Preprocessing computations ----------------------" << endl;
/*--- Compute elements surrounding points, points surrounding points, and elements surronding elements ---*/
cout << "Setting local point and element connectivity." <<endl;
geometry->SetEsuP(); geometry->SetPsuP(); geometry->SetEsuE();
/*--- Check the orientation before computing geometrical quantities ---*/
cout << "Check numerical grid orientation." <<endl;
geometry->SetBoundVolume(); geometry->Check_Orientation(config);
/*--- Create the edge structure ---*/
cout << "Identify faces, edges and vertices." <<endl;
geometry->SetFaces(); geometry->SetEdges(); geometry->SetVertex(config); geometry->SetCG();
/*--- Create the control volume structures ---*/
cout << "Set control volume structure." << endl;
geometry->SetControlVolume(config, ALLOCATE); geometry->SetBoundControlVolume(config, ALLOCATE);
/*--- Set the near-field and interface boundary conditions ---*/
geometry->MatchNearField(config);
if (config->GetKind_Adaptation() != NONE) {
cout << endl <<"--------------------- Start numerical grid adaptation -------------------" << endl;
/*-- Definition of the Class for grid adaptation ---*/
CGridAdaptation *grid_adaptation;
grid_adaptation = new CGridAdaptation(geometry, config);
/*--- Read the flow solution and/or the adjoint solution
and choose the elements to adapt ---*/
if ((config->GetKind_Adaptation() != NONE) && (config->GetKind_Adaptation() != FULL)
&& (config->GetKind_Adaptation() != WAKE) && (config->GetKind_Adaptation() != TWOPHASE)
&& (config->GetKind_Adaptation() != SMOOTHING) && (config->GetKind_Adaptation() != SUPERSONIC_SHOCK))
grid_adaptation->GetFlowSolution(geometry, config);
switch (config->GetKind_Adaptation()) {
case NONE:
break;
case SMOOTHING:
config->SetSmoothNumGrid(true);
grid_adaptation->SetNo_Refinement(geometry, 1);
break;
case FULL:
grid_adaptation->SetComplete_Refinement(geometry, 1);
break;
case WAKE:
grid_adaptation->SetWake_Refinement(geometry, 1);
break;
case TWOPHASE:
grid_adaptation->SetTwoPhase_Refinement(geometry, 1);
break;
case SUPERSONIC_SHOCK:
grid_adaptation->SetSupShock_Refinement(geometry, config);
break;
case FULL_FLOW:
grid_adaptation->SetComplete_Refinement(geometry, 1);
break;
case FULL_ADJOINT:
grid_adaptation->GetAdjSolution(geometry, config);
grid_adaptation->SetComplete_Refinement(geometry, 1);
break;
case FULL_LINEAR:
grid_adaptation->GetLinSolution(geometry, config);
grid_adaptation->SetComplete_Refinement(geometry, 1);
break;
case GRAD_FLOW:
grid_adaptation->SetIndicator_Flow(geometry, config, 1);
break;
case GRAD_ADJOINT:
grid_adaptation->GetAdjSolution(geometry, config);
grid_adaptation->SetIndicator_Adj(geometry, config, 1);
break;
case GRAD_FLOW_ADJ:
//.........这里部分代码省略.........
示例2: main
int main(int argc, char *argv[]) {
/*--- Local variables ---*/
unsigned short iDV, nZone = 1, iFFDBox, iPlane, nPlane, iVar;
double *ObjectiveFunc, *ObjectiveFunc_New, *Gradient, delta_eps, MinPlane, MaxPlane, MinXCoord, MaxXCoord,
**Plane_P0, **Plane_Normal, Volume, Volume_New, Volume_Grad;
vector<double> *Xcoord_Airfoil, *Ycoord_Airfoil, *Zcoord_Airfoil, *Variable_Airfoil;
char grid_file[MAX_STRING_SIZE], buffer_char[50], out_file[MAX_STRING_SIZE];
char *cstr;
ofstream Gradient_file, ObjFunc_file;
int rank = MASTER_NODE;
int size = SINGLE_NODE;
/*--- MPI initialization ---*/
#ifdef HAVE_MPI
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
#endif
/*--- Pointer to different structures that will be used throughout the entire code ---*/
CFreeFormDefBox** FFDBox = NULL;
CConfig *config = NULL;
CGeometry *boundary = NULL;
CSurfaceMovement *surface_mov = NULL;
/*--- Definition of the class for the definition of the problem ---*/
if (argc == 2) config = new CConfig(argv[1], SU2_GEO, ZONE_0, nZone, 0, VERB_HIGH);
else {
strcpy (grid_file, "default.cfg");
config = new CConfig(grid_file, SU2_GEO, ZONE_0, nZone, 0, VERB_HIGH);
}
/*--- Change the name of the input-output files for the parallel computation ---*/
#ifdef HAVE_MPI
config->SetFileNameDomain(rank+1);
#endif
/*--- Definition of the class for the boundary of the geometry ---*/
boundary = new CBoundaryGeometry(config, config->GetMesh_FileName(), config->GetMesh_FileFormat());
/*--- Set the number of sections, and allocate the memory ---*/
if (boundary->GetnDim() == 2) nPlane = 1;
else nPlane = config->GetnSections();
Xcoord_Airfoil = new vector<double>[nPlane];
Ycoord_Airfoil = new vector<double>[nPlane];
Zcoord_Airfoil = new vector<double>[nPlane];
Variable_Airfoil = new vector<double>[nPlane];
Plane_P0 = new double*[nPlane];
Plane_Normal = new double*[nPlane];
for(iPlane = 0; iPlane < nPlane; iPlane++ ) {
Plane_P0[iPlane] = new double[3];
Plane_Normal[iPlane] = new double[3];
}
ObjectiveFunc = new double[nPlane*20];
ObjectiveFunc_New = new double[nPlane*20];
Gradient = new double[nPlane*20];
for (iVar = 0; iVar < nPlane*20; iVar++) {
ObjectiveFunc[iVar] = 0.0;
ObjectiveFunc_New[iVar] = 0.0;
Gradient[iVar] = 0.0;
}
/*--- Evaluation of the objective function ---*/
if (rank == MASTER_NODE)
cout << endl <<"----------------------- Preprocessing computations ----------------------" << endl;
/*--- Boundary geometry preprocessing ---*/
if (rank == MASTER_NODE) cout << "Identify vertices." <<endl;
boundary->SetVertex();
/*--- Compute elements surrounding points & points surrounding points ---*/
if (rank == MASTER_NODE) cout << "Setting local point and element connectivity." << endl;
boundary->SetPoint_Connectivity();
boundary->SetEdges();
/*--- Create the control volume structures ---*/
if (rank == MASTER_NODE) cout << "Set boundary control volume structure." << endl;
boundary->SetBoundControlVolume(config, ALLOCATE);
/*--- Compute the surface curvature ---*/
if (rank == MASTER_NODE) cout << "Compute the surface curvature." << endl;
//.........这里部分代码省略.........
示例3: main
int main(int argc, char *argv[]) {
/*--- Local variables ---*/
unsigned short iMarker, iDim, iDV, iFFDBox, nZone = 1;
unsigned long iVertex, iPoint;
double delta_eps, my_Gradient, Gradient, *Normal, dS;
double *VarCoord, Sensitivity;
double dalpha[3], deps[3], dalpha_deps;
char *cstr;
ofstream Gradient_file, Jacobian_file;
bool *UpdatePoint, Comma;
int rank = MASTER_NODE;
int size = SINGLE_NODE;
#ifndef NO_MPI
/*--- MPI initialization, and buffer setting ---*/
MPI::Init(argc,argv);
rank = MPI::COMM_WORLD.Get_rank();
size = MPI::COMM_WORLD.Get_size();
#endif
/*--- Pointer to different structures that will be used throughout the entire code ---*/
CFreeFormDefBox** FFDBox = NULL;
CConfig *config = NULL;
CGeometry *boundary = NULL;
CSurfaceMovement *surface_mov = NULL;
/*--- Definition of the Class for the definition of the problem ---*/
if (argc == 2) config = new CConfig(argv[1], SU2_GPC, ZONE_0, nZone, VERB_HIGH);
else {
char grid_file[200];
strcpy (grid_file, "default.cfg");
config = new CConfig(grid_file, SU2_GPC, ZONE_0, nZone, VERB_HIGH);
}
#ifndef NO_MPI
/*--- Change the name of the input-output files for the
parallel computation ---*/
config->SetFileNameDomain(rank+1);
#endif
/*--- Definition of the Class for the boundary of the geometry,
note that the orientation of the elements is not checked ---*/
boundary = new CBoundaryGeometry(config, config->GetMesh_FileName(), config->GetMesh_FileFormat());
/*--- Perform the non-dimensionalization, in case any values are needed ---*/
config->SetNondimensionalization(boundary->GetnDim(), ZONE_0);
if (rank == MASTER_NODE)
cout << endl <<"----------------------- Preprocessing computations ----------------------" << endl;
/*--- Boundary geometry preprocessing ---*/
if (rank == MASTER_NODE) cout << "Identify vertices." <<endl;
boundary->SetVertex();
/*--- Create the control volume structures ---*/
if (rank == MASTER_NODE) cout << "Set boundary control volume structure." << endl;
boundary->SetBoundControlVolume(config, ALLOCATE);
/*--- Load the surface sensitivities from file. This is done only
once: if this is an unsteady problem, a time-average of the surface
sensitivities at each node is taken within this routine. ---*/
if (rank == MASTER_NODE) cout << "Reading surface sensitivities at each node from file." << endl;
boundary->SetBoundSensitivity(config);
/*--- Boolean controlling points to be updated ---*/
UpdatePoint = new bool[boundary->GetnPoint()];
/*--- Definition of the Class for surface deformation ---*/
surface_mov = new CSurfaceMovement();
/*--- Definition of the FFD deformation class ---*/
unsigned short nFFDBox = MAX_NUMBER_FFD;
FFDBox = new CFreeFormDefBox*[nFFDBox];
if (rank == MASTER_NODE)
cout << endl <<"---------- Start gradient evaluation using surface sensitivity ----------" << endl;
/*--- Write the gradient in a external file ---*/
if (rank == MASTER_NODE) {
cstr = new char [config->GetObjFunc_Grad_FileName().size()+1];
strcpy (cstr, config->GetObjFunc_Grad_FileName().c_str());
Gradient_file.open(cstr, ios::out);
/*--- Write an additional file with the geometric Jacobian ---*/
/*--- WARNING: This is only for serial calculations!!! ---*/
if (size == SINGLE_NODE) {
Jacobian_file.open("geo_jacobian.csv", ios::out);
Jacobian_file.precision(15);
/*--- Write the CSV file header ---*/
Comma = false;
for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) {
if (config->GetMarker_All_DV(iMarker) == YES) {
for (iVertex = 0; iVertex < boundary->nVertex[iMarker]; iVertex++) {
iPoint = boundary->vertex[iMarker][iVertex]->GetNode();
if (!Comma) { Jacobian_file << "\t\"DesignVariable\""; Comma = true;}
Jacobian_file << ", " << "\t\"" << iPoint << "\"";
}
}
//.........这里部分代码省略.........
示例4: main
int main(int argc, char *argv[]) {
char buffer_vtk[100], buffer_plt[100];
string MeshFile;
unsigned short nZone = 1;
#ifndef NO_MPI
#ifdef WINDOWS
MPI_Init(&argc,&argv);
#else
MPI::Init(argc, argv);
#endif
#endif
/*--- Definition of the class for the definition of the problem ---*/
CConfig *config;
if (argc == 2) config = new CConfig(argv[1], SU2_PBC, ZONE_0, nZone, 0, VERB_HIGH);
else {
char grid_file[200];
strcpy (grid_file, "default.cfg");
config = new CConfig(grid_file, SU2_PBC, ZONE_0, nZone, 0, VERB_HIGH);
}
/*--- Definition of the class for the geometry ---*/
CGeometry *geometry; geometry = new CGeometry;
geometry = new CPhysicalGeometry(config, ZONE_0, nZone);
/*--- Perform the non-dimensionalization, in case any values are needed ---*/
config->SetNondimensionalization(geometry->GetnDim(), ZONE_0);
cout << endl <<"----------------------- Preprocessing computations ----------------------" << endl;
/*--- Compute elements surrounding points, points surrounding points, and elements surrounding elements ---*/
cout << "Setting local point and element connectivity." <<endl;
geometry->SetEsuP(); geometry->SetPsuP(); geometry->SetEsuE();
/*--- Check the orientation before computing geometrical quantities ---*/
cout << "Checking the numerical grid orientation." <<endl;
geometry->SetBoundVolume(); geometry->Check_Orientation(config);
/*--- Create the edge structure ---*/
cout << "Identifying edges and vertices." <<endl;
geometry->SetEdges(); geometry->SetVertex(config);
/*--- Compute center of gravity ---*/
cout << "Computing centers of gravity." << endl;
geometry->SetCG();
/*--- Create the control volume structures ---*/
cout << "Setting the control volume structure." << endl;
geometry->SetControlVolume(config, ALLOCATE);
geometry->SetBoundControlVolume(config, ALLOCATE);
cout << endl <<"-------------------- Setting the periodic boundaries --------------------" << endl;
/*--- Set periodic boundary conditions ---*/
geometry->SetPeriodicBoundary(config);
/*--- Original grid for debugging purposes ---*/
strcpy (buffer_plt, "periodic_original.plt"); geometry->SetTecPlot(buffer_plt);
/*--- Create a new grid with the right periodic boundary ---*/
CGeometry *periodic; periodic = new CPeriodicGeometry(geometry, config);
periodic->SetPeriodicBoundary(geometry, config);
periodic->SetMeshFile(geometry, config, config->GetMesh_Out_FileName());
/*--- Output of the grid for debuging purposes ---*/
strcpy (buffer_plt, "periodic_halo.plt"); periodic->SetTecPlot(buffer_plt);
#ifndef NO_MPI
#ifdef WINDOWS
MPI_Finalize();
#else
MPI::Finalize();
#endif
#endif
/*--- End solver ---*/
cout << endl <<"------------------------- Exit Success (SU2_PBC) ------------------------" << endl << endl;
return EXIT_SUCCESS;
}
示例5: main
int main(int argc, char *argv[]) {
/*--- Local variables ---*/
unsigned short iDV, nZone = 1, iFFDBox, iPlane, nPlane = 5, iVar;
double ObjectiveFunc[100], ObjectiveFunc_New[100], Gradient[100], delta_eps, MinPlane, MaxPlane, Plane_P0[5][3], Plane_Normal[5][3];
vector<double> Xcoord_Airfoil[5], Ycoord_Airfoil[5], Zcoord_Airfoil[5];
char *cstr;
ofstream Gradient_file, ObjFunc_file;
int rank = MASTER_NODE;
/*--- Initialization ---*/
for (iVar = 0; iVar < 100; iVar++) {
ObjectiveFunc[iVar] = 0.0;
ObjectiveFunc_New[iVar] = 0.0;
Gradient[iVar] = 0.0;
}
#ifndef NO_MPI
/*--- MPI initialization, and buffer setting ---*/
MPI::Init(argc,argv);
rank = MPI::COMM_WORLD.Get_rank();
#endif
/*--- Pointer to different structures that will be used throughout the entire code ---*/
CFreeFormDefBox** FFDBox = NULL;
CConfig *config = NULL;
CGeometry *boundary = NULL;
CSurfaceMovement *surface_mov = NULL;
/*--- Definition of the Class for the definition of the problem ---*/
if (argc == 2) config = new CConfig(argv[1], SU2_GDC, ZONE_0, nZone, VERB_HIGH);
else {
char grid_file[200];
strcpy (grid_file, "default.cfg");
config = new CConfig(grid_file, SU2_GDC, ZONE_0, nZone, VERB_HIGH);
}
#ifndef NO_MPI
/*--- Change the name of the input-output files for the
parallel computation ---*/
config->SetFileNameDomain(rank+1);
#endif
/*--- Definition of the Class for the boundary of the geometry ---*/
boundary = new CBoundaryGeometry(config, config->GetMesh_FileName(), config->GetMesh_FileFormat());
if (rank == MASTER_NODE)
cout << endl <<"----------------------- Preprocessing computations ----------------------" << endl;
/*--- Boundary geometry preprocessing ---*/
if (rank == MASTER_NODE) cout << "Identify vertices." <<endl;
boundary->SetVertex();
/*--- Create the control volume structures ---*/
if (rank == MASTER_NODE) cout << "Set boundary control volume structure." << endl;
boundary->SetBoundControlVolume(config, ALLOCATE);
/*--- Create plane structure ---*/
if (rank == MASTER_NODE) cout << "Set plane structure." << endl;
if (boundary->GetnDim() == 2) {
nPlane = 1;
Plane_Normal[0][0] = 0.0; Plane_P0[0][0] = 0.0;
Plane_Normal[0][1] = 1.0; Plane_P0[0][1] = 0.0;
Plane_Normal[0][2] = 0.0; Plane_P0[0][2] = 0.0;
}
else if (boundary->GetnDim() == 3) {
nPlane = 5; MinPlane = config->GetSection_Limit(0); MaxPlane = config->GetSection_Limit(1);
for (iPlane = 0; iPlane < nPlane; iPlane++) {
Plane_Normal[iPlane][0] = 0.0; Plane_P0[iPlane][0] = 0.0;
Plane_Normal[iPlane][1] = 1.0; Plane_P0[iPlane][1] = MinPlane + iPlane*(MaxPlane - MinPlane)/double(nPlane-1);
Plane_Normal[iPlane][2] = 0.0; Plane_P0[iPlane][2] = 0.0;
}
}
/*--- Create airfoil section structure ---*/
if (rank == MASTER_NODE) cout << "Set airfoil section structure." << endl;
for (iPlane = 0; iPlane < nPlane; iPlane++) {
boundary->ComputeAirfoil_Section(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, config,
Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
}
if (rank == MASTER_NODE)
cout << endl <<"-------------------- Objective function evaluation ----------------------" << endl;
if (rank == MASTER_NODE) {
/*--- Evaluate objective function ---*/
for (iPlane = 0; iPlane < nPlane; iPlane++) {
if (Xcoord_Airfoil[iPlane].size() != 0) {
cout << "\nSection " << (iPlane+1) << ". Plane (yCoord): " << Plane_P0[iPlane][1] << "." << endl;
ObjectiveFunc[iPlane] = boundary->Compute_MaxThickness(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
ObjectiveFunc[1*nPlane+iPlane] = boundary->Compute_Thickness(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, 0.250000, Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
ObjectiveFunc[2*nPlane+iPlane] = boundary->Compute_Thickness(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, 0.333333, Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
ObjectiveFunc[3*nPlane+iPlane] = boundary->Compute_Thickness(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, 0.500000, Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
ObjectiveFunc[4*nPlane+iPlane] = boundary->Compute_Thickness(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, 0.666666, Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
ObjectiveFunc[5*nPlane+iPlane] = boundary->Compute_Thickness(Plane_P0[iPlane], Plane_Normal[iPlane], iPlane, 0.750000, Xcoord_Airfoil[iPlane], Ycoord_Airfoil[iPlane], Zcoord_Airfoil[iPlane], true);
//.........这里部分代码省略.........