Bonjour,


D'abord bravo pour le logiciel très fiable ( j'utilise les versions 2.14.1 et 3.05 sous windows et des versions correspondantes sous Ubuntu
pour des modélisation pour Code_Aster  ).

Cependant un problème subsiste concernant la coloration par entité physique.

Il semble que des Physicals sans rapport soient regroupés et portent la même couleur
après Mesh et Color by Physical group.
Dans l'exemple joint ( un pont ) c'est le cas du groupe Five qui rassemble arbitrairement des éléments de la dalle et du fond de caisson,
dont les Physical ont été créés séparément.

Sincères salutations.

     Jacques  BERTHELLEMY.
    _______________________

     CEREMA/CTOA,  Division des Grands Ouvrages et de l'Innovation
     14-20 boulevard Newton, Cité Descartes
     77420  Champs-sur-Marne FRANCE

     Mobile Cerema :  + 33 7 60 83 36 91

 
 
 Print.JpegQuality =  90;
 Print.JpegSmoothing = 0;
 
 General.Color.BackgroundGradient = {0,25,50};      // Haut de l'image   Codes 
couleur 0 à 256 sur RVB
 General.Color.Background = {25,50,100};            // Bas de l'image    Codes 
couleur 0 à 256 sur RVB   
 General.Color.SmallAxes = {25,255,25};   
 General.Color.Text = Yellow;
 Geometry.Color.Points = Yellow;
 General.Trackball = 1;
 General.RotationCenterGravity = 1;
 Mesh.VolumeEdges = 1;
 General.ExpertMode = 1;  
  
  
//-------------------------------------------------------------------------------

// Maillage GMSH du pont de Chamousset
// Auteurs  A. Benmokrane et J. Berthellemy  

// unités a priori MPa et m  :   a conserver dans toutes les données

//-------------------------------------------------------------------------------


// 1- Parametres DIMENSIONS PRINCIPALES  
-----------------------------------------------------

R=1800.00;
L_trav = 72.996;
L_dalle = 10.75;   L_Msup=0.800;   L_corn=0.200;
bs=4.20;
bi=3.00;
c=2.10;
pente=(bs-bi)/(2*c); 
u_exc=1.925;  
n_inter=132;  // 116 pour coller à la répartition exacte des connecteurs // 132 
pour coller aux diaphrames réels
pas=  L_trav/n_inter;

ep_dalle=0.300;

k_loc=61;
th0= - (k_loc-1) * pas / R;  

//----------------------------------------------------------------------------------------------------------------
 
//----------------------------------------------------------------------------------------------------------------
 

// Fin des parametres : toute modification au-delà nécessite une bonne 
connaissance de GMSH
//                      et peut conduire sinon à des effets inattendus.
//                      même chose si paramètres geometriquement impossibles ( 
embase trop etroite eg )

// Finesses  ------------------------------------------------------------------

   

G_precis = 0.3; 
K1_precis= 2;
K2_precis= 1;

L_grossier = 0.04;
L_moyen =    0.20*L_grossier;
L_precis =   0.10*L_grossier;  
L_fin =      0.03*L_grossier;
 
Function Polaire 
//----------------------------------------------------------------- 
 
 np=newp;  
 Point(np) = {(u+R+(L_dalle/2))*Sin(th[k]), R+(L_dalle/2) 
-(u+R+(L_dalle/2))*Cos(th[k]) , z, G_precis} ;


Return // Polaire ----------------------------------  

 
Function S_dalle 
//-----------------------------------------------------------------

  k=k+1;  // k = compteur de passages dans S_dalle     

  th[k]=  th0+ k* pas / R;     // Angle Theta de la coupe  

   
 Printf("         ") >> 'MESS_glo.txt';  
 Printf("COUPE DALLE n° %g 
-----------------------------------------------------------------------", k) >> 
'MESS_glo.txt'; 
 Printf("             th[k]=  %g  ", th[k]) >> 'MESS_glo.txt';   
 
  
  z= ep_dalle/2;      // z=0 au niveau des membrures 
sup--------------------------- NIVEAU DALLE
 
  u=-L_dalle/2;     pd1[k]=newp;   Point(pd1[k]) = 
{(u+R+(L_dalle/2))*Sin(th[k]), R+(L_dalle/2) -(u+R+(L_dalle/2))*Cos(th[k]) , z, 
K1_precis*G_precis} ; 
                    Printf(" premier point de la dalle            pd1[k]=  %g  
", pd1[k]) >> 'MESS_glo.txt';   // premier point : stoque son n°
                             
  u=-u_exc-1.20;   Call Polaire ;   
  u=-u_exc-0.80;   Call Polaire ;  
  G_precis=G_precis/K1_precis;
  u=-bs/2 - (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=-bs/2 - (L_Msup/4) + (L_corn/2) ; Call Polaire ; 
  u=-bs/2 + (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=-bs/2 + (L_Msup/4) + (L_corn/2) ; Call Polaire ;   
  G_precis=2*G_precis;
  u=-u_exc+0.80;   Call Polaire ;
  u=-u_exc+1.20;   Call Polaire ;    
  u= bs/2 -0.50;   Call Polaire ; 
  G_precis=G_precis/2;   
  u=bs/2 - (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=bs/2 - (L_Msup/4) + (L_corn/2) ; Call Polaire ; 
  u=bs/2 + (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=bs/2 + (L_Msup/4) + (L_corn/2) ; Call Polaire ;  
  G_precis= K1_precis*G_precis;   
  u=bs/2 + (L_Msup/4) + (L_corn/2) + 0.50; Call Polaire ;    
  G_precis= K1_precis*G_precis;      
  u= L_dalle/2;    Call Polaire ;                      
  G_precis=G_precis/K1_precis;   

  For j In {1:15}      
    ln=newl;  
    Line(ln) = { pd1[k]+j-1, pd1[k]+j } ;        
        EndFor

Return // S_dalle ----------------------------------

Function T_dalle 
//-----------------------------------------------------------------

 For j In {1:16}  
      For i In {1:n_coupes-1}   
         ln=newl;   
         If (i == 1 ) 
             If (j == 1 )   no_lndal_D=ln; EndIf                                
  
         EndIf      
                      
         Line(ln) = { pd1[i]+j-1,   pd1[i+1]+j-1 } ;     
        EndFor
  EndFor
  
  Printf("             no_lndal_D =  %g          ", no_lndal_D ) >> 
'MESS_glo.txt';  
                                
  For j In {1:15}  
      For i In {1:n_coupes-1}   
         ln=newll;  
         Line Loop(ln) = {1+(j-1)+(i-1)*15, 
no_lndal_D+n_inter+(i-1)+n_inter*(j-1), -(1+(j-1)+(i)*15), 
-(no_lndal_D+(i-1)+n_inter*(j-1)) };     
         ns=news;                                                               
                   // n_inter = 132  a priori
         Plane Surface(ns) = {ln};
         If (i == 1 ) 
              If (j == 1 )   no_dalle_D1=ns; EndIf
              If (j == 4 )   no_dalle_D2=ns; EndIf  
              If (j == 7 )   no_dalle_D3=ns; EndIf  
              If (j == 11 )  no_dalle_D4=ns; EndIf                 
              If (j == 14 )  no_dalle_D5=ns; EndIf  
                                         
         EndIf    
         If (i == n_coupes-1 )  
              If (j == 3 )   no_dalle_F1=ns; EndIf
              If (j == 6 )   no_dalle_F2=ns; EndIf 
              If (j == 10 )  no_dalle_F3=ns; EndIf                 
              If (j == 13 )  no_dalle_F4=ns; EndIf                   
              If (j == 15 )  no_dalle_F5=ns; EndIf                              
                                  
         EndIf                      
        EndFor
  EndFor       
        
  Printf("             no_dalle_D4 =  %g      no_dalle_F4 =  %g      ", 
no_dalle_D4,no_dalle_F4) >> 'MESS_glo.txt';   

Return // T_dalle ----------------------------------


 
Function S_Msup 
//-----------------------------------------------------------------

  k=k+1;  // k = compteur de passages dans S_Msup     

  th[k]=  th0+ k* pas / R;     // Angle Theta de la coupe  

   
 Printf("         ") >> 'MESS_glo.txt';  
 Printf("COUPE MSUP n° %g 
-----------------------------------------------------------------------", k) >> 
'MESS_glo.txt'; 
 Printf("             th[k]=  %g  ", th[k]) >> 'MESS_glo.txt';   
 
  
  z= 0.0;      // z=0 au niveau des membrures sup--------------------------- 
NIVEAU DALLE
 
  u=-bs/2 - (L_Msup/2);    ps1[k]=newp;   Point(ps1[k]) = 
{(u+R+(L_dalle/2))*Sin(th[k]), R+(L_dalle/2) -(u+R+(L_dalle/2))*Cos(th[k]) , z, 
K1_precis*G_precis} ; 
                           Printf(" premier point de la Msup            ps1[k]= 
 %g  ", ps1[k]) >> 'MESS_glo.txt';   // premier point : stoque son n°
                             
  G_precis=G_precis/K1_precis;
  u=-bs/2 - (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=-bs/2 - (L_Msup/4) + (L_corn/2) ; Call Polaire ; 
  u=-bs/2 ;                           Call Polaire ; 
  u=-bs/2 + (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=-bs/2 + (L_Msup/4) + (L_corn/2) ; Call Polaire ;    
G_precis=K1_precis*G_precis;
  u=-bs/2 + (L_Msup/2);               Call Polaire ; 
  
  u=bs/2 - (L_Msup/2);               Call Polaire ;   
  
  G_precis=G_precis/K1_precis;
  u=bs/2 - (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=bs/2 - (L_Msup/4) + (L_corn/2) ; Call Polaire ; 
  u=bs/2 ;                           Call Polaire ;   
  u=bs/2 + (L_Msup/4) - (L_corn/2) ; Call Polaire ; 
  u=bs/2 + (L_Msup/4) + (L_corn/2) ; Call Polaire ;    
G_precis=K1_precis*G_precis;
  u=bs/2 + (L_Msup/2);               Call Polaire ; 
              
  For j In {1:6}      
    ln=newl;  
    Line(ln) = { ps1[k]+j-1, ps1[k]+j } ;        
         If (k == 1 ) 
         If (j == 1 )      
              no_lnsup_T=ln;                                
         EndIf  EndIf         
    
        EndFor              

  For j In {8:13}      
    ln=newl;  
    Line(ln) = { ps1[k]+j-1, ps1[k]+j } ;        
        EndFor                 
              
Return // S_Msup ----------------------------------


Function T_Msup 
//-----------------------------------------------------------------

 For j In {1:14}  
      For i In {1:n_coupes-1}   
         ln=newl;   
         If (i == 1 ) 
         If (j == 1 )      
                  no_lnsup_L=ln;                                
         EndIf  EndIf                     
         Line(ln) = { ps1[i]+j-1,   ps1[i+1]+j-1 } ;     
        EndFor
  EndFor

  Printf("             no_lnsup_T =  %g          ", no_lnsup_T ) >> 
'MESS_glo.txt';    // 1597  
  Printf("             no_lnsup_L =  %g          ", no_lnsup_L ) >> 
'MESS_glo.txt';     
  
 For j In {1:6}  
      Printf("--------------------------------------- j =   %g          ", j ) 
>> 'MESS_glo.txt';     
      For i In {1:n_coupes-1}  
      
  //       ln=newll;   Line Loop(ln) = {7539, 9267, -7551, -9135};   // premier 
carré avec la dalle
  //       ln=newll;   Line Loop(ln) = {1, 1729, -13, -1597};        // premier 
carré sans la dalle     
         ln=newll;  
                  Printf("       ln =  %g          ", ln ) >> 'MESS_glo.txt';   
// n_inter = 132  a priori
                  A = no_lnsup_T+(j-1)+(i-1)*12;         
                  B = no_lnsup_L+(i-1)+j*n_inter;       
                  C = no_lnsup_T+12+(j-1)+(i-1)*12;    
                  D = no_lnsup_L+(i-1)+(j-1)*n_inter;  
                  Printf("        A =  %g  B =  %g  C =  %g  D =  %g  
",A,B,-C,-D ) >> 'MESS_glo.txt';              
                  Printf("              " ) >> 'MESS_glo.txt';      
      
          Line Loop(ln) = { A, B, -C, -D };
          ns=news;                                                              
// n_inter = 132  a priori
          Plane Surface(ns) = {ln};
       
              If (i == 1 )      no_Msupg_D1[j]=ns;   EndIf   
              If (i == 8 )      no_Msupg_D2[j]=ns;   EndIf   
              If (i == 19 )     no_Msupg_D3[j]=ns;   EndIf   
              If (i == 104 )    no_Msupg_D4[j]=ns;   EndIf                 
              If (i == 115 )    no_Msupg_D5[j]=ns;   EndIf   
              If (i == 126 )    no_Msupg_D6[j]=ns;   EndIf                      
                                                        
         
                 
              If (i == 7 )      no_Msupg_F1[j]=ns;   EndIf                      
        
              If (i == 18 )     no_Msupg_F2[j]=ns;   EndIf                      
        
              If (i == 103 )    no_Msupg_F3[j]=ns;   EndIf                      
        
              If (i == 114 )    no_Msupg_F4[j]=ns;   EndIf                      
        
              If (i == 125 )    no_Msupg_F5[j]=ns;   EndIf                      
        
              If (i == 132 )    no_Msupg_F6[j]=ns;   EndIf                      
        
                           
        EndFor
  EndFor   

  For j In {8:13}     
      Printf("--------------------------------------- j =   %g          ", j ) 
>> 'MESS_glo.txt';   
      For i In {1:n_coupes-1}   
                                      
//         ln=newll;   Line Loop(ln) = {7545, 10191, -7557, -10059};       // 
premier carré avec la dalle
//         Printf("  ln =  %g   OK ",ln ) >> 'MESS_glo.txt';   
//         ln=newll;   Line Loop(ln) = {7, 2653, -19, -2521};           //  
premier carré sans la dalle             
         ln=newll; 
                  Printf("       ln =  %g          ", ln ) >> 'MESS_glo.txt';   
        // n_inter = 132  a priori
                  A = no_lnsup_T+(j-2)+(i-1)*12 ;        
                  B = no_lnsup_L+(i-1)+(j)*n_inter;  
                  C = no_lnsup_T+12+(j-2)+(i-1)*12; 
                  D = no_lnsup_L+(i-1)+(j-1)*n_inter;                    
                  Printf("        A =  %g  B =  %g  C =  %g  D =  %g  
",A,B,-C,-D ) >> 'MESS_glo.txt';             
                  Printf("              " ) >> 'MESS_glo.txt';      //  
      
         Line Loop(ln) = {A, B, -C, -D};   ns=news;      Plane Surface(ns) = 
{ln};  
         
              If (i == 1 )      no_Msupd_D1[j]=ns;   EndIf   
              If (i == 8 )      no_Msupd_D2[j]=ns;   EndIf   
              If (i == 19 )     no_Msupd_D3[j]=ns;   EndIf   
              If (i == 104 )    no_Msupd_D4[j]=ns;   EndIf                 
              If (i == 115 )    no_Msupd_D5[j]=ns;   EndIf   
              If (i == 126 )    no_Msupd_D6[j]=ns;   EndIf                      
                                                        
     
              If (i == 7 )      no_Msupd_F1[j]=ns;   EndIf                      
        
              If (i == 18 )     no_Msupd_F2[j]=ns;   EndIf                      
        
              If (i == 103 )    no_Msupd_F3[j]=ns;   EndIf                      
        
              If (i == 114 )    no_Msupd_F4[j]=ns;   EndIf                      
        
              If (i == 125 )    no_Msupd_F5[j]=ns;   EndIf                      
        
              If (i == 132 )    no_Msupd_F6[j]=ns;   EndIf      
                                      
        EndFor
  EndFor  
    
   
 
Return // T_Msup ----------------------------------

  
Function S_Charp 
//-----------------------------------------------------------------

  k=k+1;  // k = compteur de passages dans Charp     

  th[k]=  th0+ k* pas / R;     // Angle Theta de la coupe  

   
 Printf("         ") >> 'MESS_glo.txt';  
 Printf("COUPE CHARP n° %g 
-----------------------------------------------------------------------", k) >> 
'MESS_glo.txt'; 
 Printf("             th[k]=  %g  ", th[k]) >> 'MESS_glo.txt';   
 
  
  z= 0.0-c/4;      // z=0 au niveau des membrures 
sup--------------------------- NIVEAU AME partie haute
   
  u=-bs/2 + pente*c/4;    pc1[k]=newp;   Point(pc1[k]) = 
{(u+R+(L_dalle/2))*Sin(th[k]), R+(L_dalle/2) -(u+R+(L_dalle/2))*Cos(th[k]) , z, 
G_precis} ; 
                          Printf(" premier point de la Charpente       pc1[k]=  
%g  ", pc1[k]) >> 'MESS_glo.txt';   // premier point : stoque son n°

  G_precis=K1_precis*G_precis;
  
  z= 0.0-3*c/4;   u=-bs/2 + 3*pente*c/4;  Call Polaire ;        
                      
  z= -c;   // fond de caisson
  
  u=-bi/2;    Call Polaire ;   
  u=-bi/6;    Call Polaire ;   
  u= bi/6;    Call Polaire ;   
  u= bi/2;    Call Polaire ;       
            
  z= 0.0-3*c/4;   u= bs/2 - 3*pente*c/4;  Call Polaire ;  
  z= 0.0-c/4;     u= bs/2 - pente*c/4;    Call Polaire ;    
G_precis=G_precis/K1_precis;    
    
  For j In {1:7}      
    ln=newl;  
    Line(ln) = { pc1[k]+j-1, pc1[k]+j } ;        
         If (k == 1 ) 
         If (j == 1 )      
              no_lnchar_T=ln;                                
         EndIf  EndIf  
        EndFor          

Return // S_Charp ----------------------------------

Function T_Charp 
//-----------------------------------------------------------------

 For j In {1:8}  
      For i In {1:n_coupes-1}   
         ln=newl;   
         If (i == 1 ) 
         If (j == 1 )      
                                   no_lnchar_L=ln;                              
  
         EndIf  EndIf                     
         Line(ln) = { pc1[i]+j-1,   pc1[i+1]+j-1 } ;     
        EndFor
  EndFor
  
  Printf("          no_lnchar_L =  %g       no_lnchar_T =  %g         ", 
no_lnchar_L,no_lnchar_T ) >> 'MESS_glo.txt';  
                                
  For j In {1:7}  
      For i In {1:n_coupes-1}   
         ln=newll;                // Line Loop(3836) = {1, 1064, -8, -932};
         
                  Printf("       ln =  %g          ", ln ) >> 'MESS_glo.txt';   
        // n_inter = 132  a priori
                  A = no_lnchar_T+(j-1)+(i-1)*7 ;        
                  B = no_lnchar_L+(i-1)+(j)*n_inter;
                  C = no_lnchar_T+7+(j-1)+(i-1)*7; 
                  D = no_lnchar_L+(i-1)+(j-1)*n_inter;                   
                  Printf("        A =  %g  B =  %g  C =  %g  D =  %g  
",A,B,-C,-D ) >> 'MESS_glo.txt';             
                  Printf("              " ) >> 'MESS_glo.txt';      //  
      
         Line Loop(ln) = {A, B, -C, -D};   ns=news;      Plane Surface(ns) = 
{ln};  
       
              If (i == 1 )      no_Fond_D1[j]=ns;   EndIf   
              If (i == 8 )      no_Fond_D2[j]=ns;   EndIf   
              If (i == 19 )     no_Fond_D3[j]=ns;   EndIf   
              If (i == 30 )     no_Fond_D4[j]=ns;   EndIf                 
              If (i == 73 )     no_Fond_D5[j]=ns;   EndIf   
              If (i == 104 )    no_Fond_D6[j]=ns;   EndIf                       
                                                       
              If (i == 115 )    no_Fond_D7[j]=ns;   EndIf   
              If (i == 126 )    no_Fond_D8[j]=ns;   EndIf              
                 
              If (i == 7 )      no_Fond_F1[j]=ns;   EndIf                       
       
              If (i == 18 )     no_Fond_F2[j]=ns;   EndIf                       
       
              If (i == 29 )     no_Fond_F3[j]=ns;   EndIf                       
       
              If (i == 72 )     no_Fond_F4[j]=ns;   EndIf  
              If (i == 103 )    no_Fond_F5[j]=ns;   EndIf                       
       
              If (i == 114 )    no_Fond_F6[j]=ns;   EndIf      
              If (i == 125 )    no_Fond_F7[j]=ns;   EndIf                       
       
              If (i == 132 )    no_Fond_F8[j]=ns;   EndIf                    
              
                    
              If (i == 1 )      no_Ame_D1[j]=ns;   EndIf   
              If (i == 8 )      no_Ame_D2[j]=ns;   EndIf   
              If (i == 19 )     no_Ame_D3[j]=ns;   EndIf   
              If (i == 115 )    no_Ame_D4[j]=ns;   EndIf                 
              If (i == 126 )    no_Ame_D5[j]=ns;   EndIf   
                                                                                
              
              If (i == 7 )      no_Ame_F1[j]=ns;   EndIf                        
      
              If (i == 18 )     no_Ame_F2[j]=ns;   EndIf                        
      
              If (i == 114 )    no_Ame_F3[j]=ns;   EndIf                        
      
              If (i == 125 )    no_Ame_F4[j]=ns;   EndIf                        
      
              If (i == 132 )    no_Ame_F5[j]=ns;   EndIf                        
      
              
         If (i == 1 ) 
         If (j == 1 )      
                                   no_charp_D=ns;                               
  
         EndIf  EndIf 
         If (j == 7 ) 
         If (i == n_coupes-1 )      
                                   no_charp_F=ns;                               
 
         EndIf  EndIf                    
        EndFor
  EndFor       
        
  Printf("             no_charp_D =  %g      no_charp_F =  %g      ", 
no_charp_D,no_charp_F) >> 'MESS_glo.txt';   

Return // T_Charp ----------------------------------
 
Function L_Ame_semel 
//-----------------------------------------------------------------   Liaisons 
Ame-semelle

  k=k+1;  // k = compteur de passages dans Charp     

  ln=newl;  
  If ( k == 1 ) 
     no_lnAmechar = ln; 
  EndIf 
  Line(ln)   = { ps1[k]+3,  pc1[k]} ;     
  Line(ln+1) = { ps1[k]+10, pc1[k]+7 } ;          
  
Return // L_Ame_semel ----------------------------------  
  
Function T_Ame_semel_1 
//-----------------------------------------------------------------  

     no_lname1_L = no_lnsup_L+3*n_inter;
     Printf("   no_lname1_L  =  %g    no_lnAmechar =  %g    no_lnchar_L =  %g   
", no_lname1_L, no_lnAmechar, no_lnchar_L ) >> 'MESS_glo.txt';  

    
     For i In {1:n_coupes-1}   
         ln=newll;                  //  Line Loop(ln) = {9531, 17988, -15082, 
-17986};
                                    //                  {9532, 17990, -15083, 
-17988 };  etc ...
         
                  Printf("       ln =  %g          ", ln ) >> 'MESS_glo.txt';   
        // n_inter = 132  a priori
                  A = no_lname1_L+(i-1) ;        
                  B = no_lnAmechar+2*(i);
                  C = no_lnchar_L+(i-1); 
                  D = no_lnAmechar+2*(i-1);                   
                  Printf("        A =  %g  B =  %g  C =  %g  D =  %g  
",A,B,-C,-D ) >> 'MESS_glo.txt';             
                  Printf("              " ) >> 'MESS_glo.txt';      //  
      
         Line Loop(ln) = {A, B, -C, -D};   ns=news;      Plane Surface(ns) = 
{ln};  
         
              If (i == 1 )      no_LgAme_D1=ns;   EndIf   
              If (i == 8 )      no_LgAme_D2=ns;   EndIf   
              If (i == 19 )     no_LgAme_D3=ns;   EndIf   
              If (i == 115 )    no_LgAme_D4=ns;   EndIf                 
              If (i == 126 )    no_LgAme_D5=ns;   EndIf   
                                                                                
           
              If (i == 7 )      no_LgAme_F1=ns;   EndIf                         
     
              If (i == 18 )     no_LgAme_F2=ns;   EndIf                         
     
              If (i == 114 )    no_LgAme_F3=ns;   EndIf                         
     
              If (i == 125 )    no_LgAme_F4=ns;   EndIf                         
     
              If (i == 132 )    no_LgAme_F5=ns;   EndIf         
            
        EndFor   
 
Return // T_Ame_semel_1 ----------------------------------

Function T_Ame_semel_2 
//-----------------------------------------------------------------  

     no_lname2_L = no_lname1_L + 7*n_inter;
     no_lnAmechar = no_lnAmechar + 1;
     no_lnchar_L = no_lnchar_L + 7*n_inter;
     Printf("   no_lname2_L  =  %g    no_lnAmechar =  %g    no_lnchar_L =  %g   
", no_lname2_L, no_lnAmechar, no_lnchar_L ) >> 'MESS_glo.txt';  

    
     For i In {1:n_coupes-1}   
         ln=newll;                  //  Line Loop(ln)  //     { 10455, 17989, 
16006,  17987  };
                                    //                    etc ...
         
                  Printf("       ln =  %g          ", ln ) >> 'MESS_glo.txt';   
        // n_inter = 132  a priori
                  A = no_lname2_L+(i-1) ;        
                  B = no_lnAmechar+2*(i);
                  C = no_lnchar_L+(i-1); 
                  D = no_lnAmechar+2*(i-1);                   
                  Printf("        A =  %g  B =  %g  C =  %g  D =  %g  
",A,B,-C,-D ) >> 'MESS_glo.txt';             
                  Printf("              " ) >> 'MESS_glo.txt';      //  
      
         Line Loop(ln) = {A, B, -C, -D};   ns=news;      Plane Surface(ns) = 
{ln};  
         
              If (i == 1 )      no_LdAme_D1=ns;   EndIf       
              If (i == 8 )      no_LdAme_D2=ns;   EndIf        
              If (i == 19 )     no_LdAme_D3=ns;   EndIf        
              If (i == 115 )    no_LdAme_D4=ns;   EndIf        
              If (i == 126 )    no_LdAme_D5=ns;   EndIf        
                                                               
              If (i == 7 )      no_LdAme_F1=ns;   EndIf        
              If (i == 18 )     no_LdAme_F2=ns;   EndIf        
              If (i == 114 )    no_LdAme_F3=ns;   EndIf        
              If (i == 125 )    no_LdAme_F4=ns;   EndIf        
              If (i == 132 )    no_LdAme_F5=ns;   EndIf                    
 
        EndFor   

Return // T_Ame_semel_2 ----------------------------------



//-----------------------------------------------------------------------------------------------------------------------------------------------


//                                                                       
Initialise MESSAGES  INTERMEDIAIRES


  Printf("SORTIES INTERMEDIAIRES  --------------------------------------" ) > 
'MESS_glo.txt'; // initialise MESS_glo     

  // z=0 au niveau dss membrures sup

  Cdalle=1000;   Point(Cdalle)  = {0.00  , -R , ep_dalle/2 ,  G_precis} ;

  Printf("             L_dalle =  %g      bs =  %g      ", L_dalle,bs) >> 
'MESS_glo.txt'; 
  Printf("             L_Msup =  %g  ", L_Msup) >> 'MESS_glo.txt'; 
  Printf("             L_corn =  %g  ", L_corn) >> 'MESS_glo.txt'; 
  Printf("             u_exc =  %g  ", u_exc) >> 'MESS_glo.txt';   
    
  Printf("             th0 =  %g  ", th0) >> 'MESS_glo.txt';   

  n_coupes= n_inter+1;

//----------------------------------------------------------------------------------------------------------

Si_Dalle=1;   // 0 ou 1    
Si_Msup=1; 

//-------------------------------------- Lignes et plaques de la dalle

 If ( Si_Dalle == 1 )
 
Printf("------------------------------------------------------------------------------
       Lignes et plaques de la dalle ") >> 'MESS_glo.txt';   
  
     k=0;   // k = compteur de passages dans Coupe / initialisé à 0
     For i In {1:n_coupes}  
          Call S_dalle ;  // liens dans les coupes transversales                
         
           EndFor
     Call T_dalle ;  // liens d'une coupe à l'autre            
  EndIf 
  
//-------------------------------------- Lignes et plaques des Msup

  If ( Si_Msup == 1 )
  
Printf("------------------------------------------------------------------------------
       Lignes et plaques des Msup ") >> 'MESS_glo.txt';   
   
  
      k=0;   // k = compteur de passages dans Coupe / initialisé à 0
      For i In {1:n_coupes}  
        Call S_Msup ;                    
                        EndFor     
      Call T_Msup ;  
  EndIf   
  
 
//-------------------------------------- Lignes et plaques du reste de la 
charpente

  
Printf("------------------------------------------------------------------------------
       Lignes et plaques du reste de la charpente ") >> 'MESS_glo.txt';   

  k=0;   // k = compteur de passages dans Coupe / initialisé à 0
  For i In {1:n_coupes}  
       Call S_Charp ;                    
        EndFor
  Call T_Charp ; 
    
  If ( Si_Msup == 1 )   
  
Printf("------------------------------------------------------------------------------
       Liaison S-Sup à la Charpente ") >> 'MESS_glo.txt';   
   
      k=0;   // k = compteur de passages dans Coupe / initialisé à 0
      For i In {1:n_coupes}  
           Call L_Ame_semel;                     
                        EndFor 

  
Printf("------------------------------------------------------------------------------
       Coques pour la S-Sup n°1 ") >> 'MESS_glo.txt';       
      Call T_Ame_semel_1 ;
  
Printf("------------------------------------------------------------------------------
       Coques pour la S-Sup n°2 ") >> 'MESS_glo.txt';       
      Call T_Ame_semel_2 ;
                    
  EndIf    
   
//-------------------------------------------------------------------------------------------------
 ENTRETOISE sur pile  si tout actif
  
  z= 0.0-3*c/7;   
  u=-(bs/2)*(3/5)  ; 
  np=newp;    Point(np) = {(u+R+(L_dalle/2))*Sin(th0), R+(L_dalle/2) 
-(u+R+(L_dalle/2))*Cos(th0) , z, G_precis} ;    
  u=+(bs/2)*(3/5)  ;   
  np=newp;    Point(np) = {(u+R+(L_dalle/2))*Sin(th0), R+(L_dalle/2) 
-(u+R+(L_dalle/2))*Cos(th0) , z, G_precis} ;  
 
  thetaF =  th0+ n_coupes* pas / R; 
  u=-(bs/2)*(3/5)  ; 
  np=newp;    Point(np) = {(u+R+(L_dalle/2))*Sin(thetaF), R+(L_dalle/2) 
-(u+R+(L_dalle/2))*Cos(thetaF) , z, G_precis} ;    
  u=+(bs/2)*(3/5)  ;   
  np=newp;    Point(np) = {(u+R+(L_dalle/2))*Sin(thetaF), R+(L_dalle/2) 
-(u+R+(L_dalle/2))*Cos(thetaF) , z, G_precis} ;


// nraidis=newl;    
// Printf("             nraidis =  %g  ", nraidis) >> 'MESS_glo.txt';   
// Line(nraidis)   = {6058, 4984};   Line(nraidis+1) = {6058, 6052};    
Line(nraidis+2) = {6058, 6051}; 
// Line(nraidis+3) = {6058, 6057};   Line(nraidis+4) = {6057, 4983};    
Line(nraidis+5) = {6057, 6050};  
// Line(nraidis+6) = {6057, 6049};   Line(nraidis+7) = {6047, 4983};    
Line(nraidis+8) = {6054, 4984};
// 
// ns_about1=news; 
// Line Loop(19318) = {15610, 19317, -19309, 19310, 15609};  Plane 
Surface(ns_about1) = {19318};
// Line Loop(19320) = {19310, -15608, -19311};  Plane Surface(ns_about1+1) = 
{19320};
// Line Loop(19322) = {19317, 9658, 9659, 9660, 18780};  Plane 
Surface(ns_about1+2) = {19322};
// Line Loop(19324) = {19312, 19314, 15607, -19311};  Plane 
Surface(ns_about1+3) = {19324}; 
// Line Loop(19326) = {19314, -15606, -19315};   Plane Surface(ns_about1+4) = 
{19326}; 
// Line Loop(19328) = {19313, -9657, -9656, -9655, 18779, 15604, 15605, 
-19315};   Plane Surface(ns_about1+5) = {19328};
// Line Loop(19329) = {19316, -9657, -9656, -9655, 18779}; Plane 
Surface(ns_about1+6) = {19329};
// 
// 
// 
//         
// ---------------------------------------------------- Suppression des centres 
inutiles pour la suite
 
  Delete {  Point{Cdalle};   }

// ---------------------------------------------------- Déclaration des 
Physicals
       
   dalle_E=21;      // Encorbellement 22 cm            
   dalle_M=22;      // Membrures      30 cm            
   dalle_C=25;      // Centre         25 cm            
                                                       
   Msup_84  =  1084 ;   // semelles sup          
   Msup_53  =  1053 ;    
   Msup_24  =  1024 ;       
   Msup_33  =  1034 ;                                                
   Msup_72  =  1072 ;                                                
   Msup_111 =  1111 ;
   
   Ame_12 = 2012 ;       Ame_14 = 2014 ;      Ame_16 = 2016 ;       
   
   Fond_45  =  3045 ;        Fond_18  =  3018 ;     // Fond de caisson
   Fond_28  =  3028 ;        Fond_23  =  3023 ;
   Fond_22  =  3022 ;        Fond_40  =  3040 ;
   Fond_14  =  3014 ;        Fond_38  =  3038 ;
      
   About1=102;
   
  If ( Si_Dalle == 1 )                          
   Physical Surface(dalle_E) = {no_dalle_D1 : no_dalle_F1,  no_dalle_D5 : 
no_dalle_F5};         
   Physical Surface(dalle_M) = {no_dalle_D2 : no_dalle_F2,  no_dalle_D4 : 
no_dalle_F4}; 
   Physical Surface(dalle_C) = {no_dalle_D3 : no_dalle_F3 };            
  EndIf
  
  If (  Si_Msup==1  ) 
   Physical Surface(Msup_84)  = {no_Msupg_D1[1]: no_Msupg_F1[1],   
no_Msupg_D1[2]: no_Msupg_F1[2], 
                                 no_Msupg_D1[3]: no_Msupg_F1[3],   
no_Msupg_D1[4]: no_Msupg_F1[4], 
                                 no_Msupg_D1[5]: no_Msupg_F1[5],   
no_Msupg_D1[6]: no_Msupg_F1[6], 
                                 no_Msupd_D1[8]: no_Msupd_F1[8],   
no_Msupd_D1[9]: no_Msupd_F1[9],     
                                 no_Msupd_D1[10]:no_Msupd_F1[10],  
no_Msupd_D1[11]:no_Msupd_F1[11], 
                                 no_Msupd_D1[12]:no_Msupd_F1[12],  
no_Msupd_D1[13]:no_Msupd_F1[13]  }; 
                                                
   Physical Surface(Msup_53)  = {no_Msupg_D2[1]: no_Msupg_F2[1],   
no_Msupg_D2[2]: no_Msupg_F2[2],                  
                                 no_Msupg_D2[3]: no_Msupg_F2[3],   
no_Msupg_D2[4]: no_Msupg_F2[4],                  
                                 no_Msupg_D2[5]: no_Msupg_F2[5],   
no_Msupg_D2[6]: no_Msupg_F2[6],                  
                                 no_Msupd_D2[8]: no_Msupd_F2[8],   
no_Msupd_D2[9]: no_Msupd_F2[9],                  
                                 no_Msupd_D2[10]:no_Msupd_F2[10],  
no_Msupd_D2[11]:no_Msupd_F2[11],                 
                                 no_Msupd_D2[12]:no_Msupd_F2[12],  
no_Msupd_D2[13]:no_Msupd_F2[13]  };              
                                        
   Physical Surface(Msup_24)  = {no_Msupg_D3[1]: no_Msupg_F3[1],   
no_Msupg_D3[2]: no_Msupg_F3[2],                  
                                 no_Msupg_D3[3]: no_Msupg_F3[3],   
no_Msupg_D3[4]: no_Msupg_F3[4],                  
                                 no_Msupg_D3[5]: no_Msupg_F3[5],   
no_Msupg_D3[6]: no_Msupg_F3[6],                  
                                 no_Msupd_D3[8]: no_Msupd_F3[8],   
no_Msupd_D3[9]: no_Msupd_F3[9],                  
                                 no_Msupd_D3[10]:no_Msupd_F3[10],  
no_Msupd_D3[11]:no_Msupd_F3[11],                 
                                 no_Msupd_D3[12]:no_Msupd_F3[12],  
no_Msupd_D3[13]:no_Msupd_F3[13]  };    
                                 
   Physical Surface(Msup_33)  = {no_Msupg_D4[1]: no_Msupg_F4[1],   
no_Msupg_D4[2]: no_Msupg_F4[2],             
                                 no_Msupg_D4[3]: no_Msupg_F4[3],   
no_Msupg_D4[4]: no_Msupg_F4[4],             
                                 no_Msupg_D4[5]: no_Msupg_F4[5],   
no_Msupg_D4[6]: no_Msupg_F4[6],             
                                 no_Msupd_D4[8]: no_Msupd_F4[8],   
no_Msupd_D4[9]: no_Msupd_F4[9],             
                                 no_Msupd_D4[10]:no_Msupd_F4[10],  
no_Msupd_D4[11]:no_Msupd_F4[11],            
                                 no_Msupd_D4[12]:no_Msupd_F4[12],  
no_Msupd_D4[13]:no_Msupd_F4[13]  };         
                                 
   Physical Surface(Msup_72)  = {no_Msupg_D5[1]: no_Msupg_F5[1],   
no_Msupg_D5[2]: no_Msupg_F5[2],         
                                 no_Msupg_D5[3]: no_Msupg_F5[3],   
no_Msupg_D5[4]: no_Msupg_F5[4],        
                                 no_Msupg_D5[5]: no_Msupg_F5[5],   
no_Msupg_D5[6]: no_Msupg_F5[6],        
                                 no_Msupd_D5[8]: no_Msupd_F5[8],   
no_Msupd_D5[9]: no_Msupd_F5[9],        
                                 no_Msupd_D5[10]:no_Msupd_F5[10],  
no_Msupd_D5[11]:no_Msupd_F5[11],       
                                 no_Msupd_D5[12]:no_Msupd_F5[12],  
no_Msupd_D5[13]:no_Msupd_F5[13]  };  
                                        
   Physical Surface(Msup_111) = {no_Msupg_D6[1]: no_Msupg_F6[1],   
no_Msupg_D6[2]: no_Msupg_F6[2],         
                                 no_Msupg_D6[3]: no_Msupg_F6[3],   
no_Msupg_D6[4]: no_Msupg_F6[4],        
                                 no_Msupg_D6[5]: no_Msupg_F6[5],   
no_Msupg_D6[6]: no_Msupg_F6[6],        
                                 no_Msupd_D6[8]: no_Msupd_F6[8],   
no_Msupd_D6[9]: no_Msupd_F6[9],        
                                 no_Msupd_D6[10]:no_Msupd_F6[10],  
no_Msupd_D6[11]:no_Msupd_F6[11],       
                                 no_Msupd_D6[12]:no_Msupd_F6[12],  
no_Msupd_D6[13]:no_Msupd_F6[13]  };     
 EndIf  //  Si_Msup        
 
 
 
 
                            
                                  
 Physical Surface(Fond_45)  = {no_Fond_D1[3]: no_Fond_F1[3] , no_Fond_D1[4]: 
no_Fond_F1[4] , no_Fond_D1[5]: no_Fond_F1[5] };
 Physical Surface(Fond_28)  = {no_Fond_D2[3]: no_Fond_F2[3] , no_Fond_D2[4]: 
no_Fond_F2[4] , no_Fond_D2[5]: no_Fond_F2[5] };
 Physical Surface(Fond_22)  = {no_Fond_D3[3]: no_Fond_F3[3] , no_Fond_D3[4]: 
no_Fond_F3[4] , no_Fond_D3[5]: no_Fond_F3[5] };
 Physical Surface(Fond_14)  = {no_Fond_D4[3]: no_Fond_F4[3] , no_Fond_D4[4]: 
no_Fond_F4[4] , no_Fond_D4[5]: no_Fond_F4[5] };
 Physical Surface(Fond_18)  = {no_Fond_D5[3]: no_Fond_F5[3] , no_Fond_D5[4]: 
no_Fond_F5[4] , no_Fond_D5[5]: no_Fond_F5[5] };
 Physical Surface(Fond_23)  = {no_Fond_D6[3]: no_Fond_F6[3] , no_Fond_D6[4]: 
no_Fond_F6[4] , no_Fond_D6[5]: no_Fond_F6[5] };
 Physical Surface(Fond_40)  = {no_Fond_D7[3]: no_Fond_F7[3] , no_Fond_D7[4]: 
no_Fond_F7[4] , no_Fond_D7[5]: no_Fond_F7[5] };
 Physical Surface(Fond_38)  = {no_Fond_D8[3]: no_Fond_F8[3] , no_Fond_D8[4]: 
no_Fond_F8[4] , no_Fond_D8[5]: no_Fond_F8[5] };
       
                                                                                
                                                                                
                                                                                
                  
 Physical Surface(Ame_16)  = {no_Ame_D1[1]: no_Ame_F1[1] , no_Ame_D1[2]: 
no_Ame_F1[2] , no_Ame_D1[6]: no_Ame_F1[6] , no_Ame_D1[7]: no_Ame_F1[7],
                              no_Ame_D5[1]: no_Ame_F5[1] , no_Ame_D5[2]: 
no_Ame_F5[2] , no_Ame_D5[6]: no_Ame_F5[6] , no_Ame_D5[7]: no_Ame_F5[7],
                              no_LdAme_D1 : no_LdAme_F1 ,  no_LgAme_D1 : 
no_LgAme_F1 ,  no_LdAme_D5 : no_LdAme_F5 ,  no_LgAme_D5 : no_LgAme_F5 };        
 Physical Surface(Ame_14)  = {no_Ame_D2[1]: no_Ame_F2[1] , no_Ame_D2[2]: 
no_Ame_F2[2] , no_Ame_D2[6]: no_Ame_F2[6] , no_Ame_D2[7]: no_Ame_F2[7],
                              no_Ame_D4[1]: no_Ame_F4[1] , no_Ame_D4[2]: 
no_Ame_F4[2] , no_Ame_D4[6]: no_Ame_F4[6] , no_Ame_D4[7]: no_Ame_F4[7], 
                              no_LdAme_D2 : no_LdAme_F2 ,  no_LgAme_D2 : 
no_LgAme_F2 ,  no_LdAme_D4 : no_LdAme_F4 ,  no_LgAme_D4 : no_LgAme_F4 }; 
 Physical Surface(Ame_12)  = {no_Ame_D3[1]: no_Ame_F3[1] , no_Ame_D3[2]: 
no_Ame_F3[2] , no_Ame_D3[6]: no_Ame_F3[6] , no_Ame_D3[7]: no_Ame_F3[7],         
      
                              no_LdAme_D3 : no_LdAme_F3 ,  no_LgAme_D3 : 
no_LgAme_F3     };        
 
  
  
  
  

  
// Physical Line(100) = {nraidis : nraidis+8 }; 
// Physical     Surface (About1) =   {  ns_about1 :ns_about1+6  };      
        
// Fin  
 
 
 
 
 
 


  

_______________________________________________
gmsh mailing list
[email protected]
http://onelab.info/mailman/listinfo/gmsh

Reply via email to