# include  <set> # include  <cmath> # include  <gmsh.h> # include  <iostream> int  main ( int  argc,  char * *  argv) 
{ gmsh:: initialize ( argc,  argv) ; 		gmsh:: model:: add ( "t2" ) ; 				double  lc =  0.05 ; 	gmsh:: model:: geo:: addPoint ( 0 ,  0 ,  0 ,  lc,  1 ) ; gmsh:: model:: geo:: addPoint ( .1 ,  0 ,  0 ,  lc,  2 ) ; gmsh:: model:: geo:: addPoint ( .1 ,  .3 ,  0 ,  lc,  3 ) ; gmsh:: model:: geo:: addPoint ( 0 ,  .3 ,  0 ,  lc,  4 ) ; 		gmsh:: model:: geo:: addLine ( 1 ,  2 ,  1 ) ; gmsh:: model:: geo:: addLine ( 2 ,  3 ,  2 ) ; gmsh:: model:: geo:: addLine ( 3 ,  4 ,  3 ) ; gmsh:: model:: geo:: addLine ( 4 ,  1 ,  4 ) ; gmsh:: model:: geo:: addCurveLoop ( {  4 ,  1 ,  2 ,  3  } ,  1 ) ; 	gmsh:: model:: geo:: addPlaneSurface ( {  1  } ,  1 ) ; 		gmsh:: model:: geo:: synchronize ( ) ; gmsh:: model:: addPhysicalGroup ( 1 ,  {  1 ,  2 ,  4  } ,  5 ) ; 	gmsh:: model:: addPhysicalGroup ( 2 ,  {  1  } ,  - 1 ,  "My surface" ) ; gmsh:: model:: geo:: addPoint ( 0 ,  .4 ,  0 ,  lc,  5 ) ; 		gmsh:: model:: geo:: addLine ( 4 ,  5 ,  5 ) ; 				gmsh:: model:: geo:: translate ( {  { 0 ,  5 }  } ,  - 0.02 ,  0 ,  0 ) ; gmsh:: model:: geo:: rotate ( {  { 0 ,  5 }  } ,  0 ,  0.3 ,  0 ,  0 ,  0 ,  1 ,  - M_PI /  4 ) ; 	std:: vector< std:: pair< int ,  int >  >  ov; gmsh:: model:: geo:: copy ( {  { 0 ,  3 }  } ,  ov) ; 	gmsh:: model:: geo:: translate ( ov,  0 ,  0.05 ,  0 ) ; 	gmsh:: model:: geo:: addLine ( 3 ,  ov[ 0 ] . second,  7 ) ; 	gmsh:: model:: geo:: addLine ( ov[ 0 ] . second,  5 ,  8 ) ;   gmsh:: model:: geo:: addCurveLoop ( {  5 ,  - 8 ,  - 7 ,  3  } ,  10 ) ; 		gmsh:: model:: geo:: addPlaneSurface ( {  10  } ,  11 ) ; 				gmsh:: model:: geo:: addPoint ( 0. ,  0.3 ,  0.12 ,  lc,  100 ) ; 		gmsh:: model:: geo:: addPoint ( 0.1 ,  0.3 ,  0.12 ,  lc,  101 ) ; 	gmsh:: model:: geo:: addPoint ( 0.1 ,  0.35 ,  0.12 ,  lc,  102 ) ; 	gmsh:: model:: geo:: synchronize ( ) ; std:: vector< double >  xyz; gmsh:: model:: getValue ( 0 ,  5 ,  { } ,  xyz) ; gmsh:: model:: geo:: addPoint ( xyz[ 0 ] ,  xyz[ 1 ] ,  0.12 ,  lc,  103 ) ; gmsh:: model:: geo:: addLine ( 4 ,  100 ,  110 ) ; gmsh:: model:: geo:: addLine ( 3 ,  101 ,  111 ) ; gmsh:: model:: geo:: addLine ( 6 ,  102 ,  112 ) ; gmsh:: model:: geo:: addLine ( 5 ,  103 ,  113 ) ; gmsh:: model:: geo:: addLine ( 103 ,  100 ,  114 ) ; gmsh:: model:: geo:: addLine ( 100 ,  101 ,  115 ) ; gmsh:: model:: geo:: addLine ( 101 ,  102 ,  116 ) ; gmsh:: model:: geo:: addLine ( 102 ,  103 ,  117 ) ; gmsh:: model:: geo:: addCurveLoop ( {  115 ,  - 111 ,  3 ,  110  } ,  118 ) ; gmsh:: model:: geo:: addPlaneSurface ( {  118  } ,  119 ) ; gmsh:: model:: geo:: addCurveLoop ( {  111 ,  116 ,  - 112 ,  - 7  } ,  120 ) ; gmsh:: model:: geo:: addPlaneSurface ( {  120  } ,  121 ) ; gmsh:: model:: geo:: addCurveLoop ( {  112 ,  117 ,  - 113 ,  - 8  } ,  122 ) ; gmsh:: model:: geo:: addPlaneSurface ( {  122  } ,  123 ) ; gmsh:: model:: geo:: addCurveLoop ( {  114 ,  - 110 ,  5 ,  113  } ,  124 ) ; gmsh:: model:: geo:: addPlaneSurface ( {  124  } ,  125 ) ; gmsh:: model:: geo:: addCurveLoop ( {  115 ,  116 ,  117 ,  114  } ,  126 ) ; gmsh:: model:: geo:: addPlaneSurface ( {  126  } ,  127 ) ; gmsh:: model:: geo:: addSurfaceLoop ( {  127 ,  119 ,  121 ,  123 ,  125 ,  11  } ,  128 ) ; 	gmsh:: model:: geo:: addVolume ( {  128  } ,  129 ) ; 	gmsh:: model:: geo:: synchronize ( ) ; gmsh:: model:: addPhysicalGroup ( 3 ,  {  129  } ,  1 ,  "The volume" ) ; gmsh:: model:: mesh:: generate ( 3 ) ; gmsh:: write ( "t2.msh" ) ; std:: set< std:: string>  args ( argv,  argv +  argc) ; if  ( ! args. count ( "-nopopup" ) )  gmsh:: fltk:: run ( ) ; gmsh:: finalize ( ) ; return  0 ; }