@@ -3130,4 +3130,70 @@ AeroPipeline_3D::smoothingLinearBlocks(int nb_iteration)
31303130
31313131 }
31323132}
3133+ /* ------------------------------------------------------------------------*/
3134+ Blocking3D*
3135+ AeroPipeline_3D::getBlocking ()
3136+ {
3137+ // std::cout<<"Writing blocks for cgns"<<std::endl;
3138+ gmds::Variable<int >* discrI = m_Blocking3D.newVariable <int , gmds::GMDS_REGION>(" discrI" );
3139+ gmds::Variable<int >* discrJ = m_Blocking3D.newVariable <int , gmds::GMDS_REGION>(" discrJ" );
3140+ gmds::Variable<int >* discrK = m_Blocking3D.newVariable <int , gmds::GMDS_REGION>(" discrK" );
3141+ gmds::Variable<int >* farfield = m_Blocking3D.newVariable <int , gmds::GMDS_NODE>(" Farfield" );
3142+ gmds::Variable<int >* paroi = m_Blocking3D.newVariable <int , gmds::GMDS_NODE>(" Paroi" );
3143+ Variable<int >* var_couche_blocking = m_Blocking3D.getVariable <int , GMDS_NODE>(" GMDS_Couche" );
3144+ int max_layer = 0 ;
3145+ for (auto b : m_Blocking3D.allBlocks ()){
3146+ gmds::Variable<int >* internalNodes = m_Blocking3D.newVariable <int , gmds::GMDS_NODE>(" block" +std::to_string (b.id ()));
3147+ // std::cout<<"Block "<<b.id()<<std::endl;
3148+ int b_discrI = b.getNbDiscretizationI (),b_discrJ = b.getNbDiscretizationJ (), b_discrK = b.getNbDiscretizationK ();
3149+ discrI->set (b.id (), b_discrI);
3150+ discrJ->set (b.id (), b_discrJ);
3151+ discrK->set (b.id (), b_discrK);
3152+ int iNode = 0 ;
3153+ for (int k = 0 ; k < b_discrK; k++){
3154+ for (int j = 0 ; j < b_discrJ; j++){
3155+ for (int i = 0 ; i < b_discrI; i++){
3156+ internalNodes->set (b (i,j,k).id (),iNode+1 );
3157+ iNode++;
3158+ }
3159+ }
3160+ }
3161+ for (int i_b = 0 ; i_b<8 ; i_b++){
3162+ int layer = var_couche_blocking->value (b.getNode (i_b).id ());
3163+ max_layer = layer > max_layer ? layer : max_layer;
3164+ }
3165+ }
3166+ for (auto f : m_Blocking3D.faces ()){
3167+ Blocking3D::BlockFace b_f = m_Blocking3D.blockFace (f);
3168+ bool isWall = true ;
3169+ bool isFF = true ;
3170+ for (int i_n = 0 ; i_n<4 ; i_n++){
3171+ if (var_couche_blocking->value (b_f.getNode (i_n).id ()) != 0 ) isWall = false ;
3172+ if (var_couche_blocking->value (b_f.getNode (i_n).id ()) != max_layer) isFF = false ;
3173+ }
3174+ int bf_discrI = b_f.getNbDiscretizationI (), bf_discrJ = b_f.getNbDiscretizationJ ();
3175+ if (isFF) {
3176+ for (int j = 0 ; j < bf_discrJ; j++) {
3177+ for (int i = 0 ; i < bf_discrI; i++) {
3178+ farfield->set (b_f (i, j).id (), 1 );
3179+ }
3180+ }
3181+ }else if (isWall){
3182+ for (int j = 0 ; j < bf_discrJ; j++) {
3183+ for (int i = 0 ; i < bf_discrI; i++) {
3184+ paroi->set (b_f (i, j).id (), 1 );
3185+ }
3186+ }
3187+ }
3188+ }
3189+ /* gmds::IGMeshIOService ioService(&m_Blocking3D);
3190+ gmds::VTKWriter vtkWriter(&ioService);
3191+ vtkWriter.setCellOptions(gmds::N|gmds::R);
3192+ vtkWriter.setDataOptions(gmds::N|gmds::R);
3193+ std::cout<<"start writing"<<std::endl;
3194+ vtkWriter.write("CGNS_"+m_params.output_file);
3195+ std::cout<<"end writing"<<std::endl;*/
3196+ // return "CGNS_"+m_params.output_file;
3197+ return &m_Blocking3D;
3198+ }
31333199/* ------------------------------------------------------------------------*/
0 commit comments