本文整理汇总了C++中CConfig::GetMarker_All_DV方法的典型用法代码示例。如果您正苦于以下问题:C++ CConfig::GetMarker_All_DV方法的具体用法?C++ CConfig::GetMarker_All_DV怎么用?C++ CConfig::GetMarker_All_DV使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CConfig
的用法示例。
在下文中一共展示了CConfig::GetMarker_All_DV方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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 << "\"";
}
}
//.........这里部分代码省略.........