* TOPOACTI PROCEDUR FD218221 25/12/18 21:15:01 12429 ************************************************************************ ** Procedure called by TOPOPTIM to generate data on the active zone (A) ** and its intersection (I) with the design zone (D), including: ** - meshes; ** - models; ** - penalized physical densities (Z); ** - sensitivities of the penalized physical densities; ** - (full density) material; ** - penalized material; ** - contact mesh, contact model, and contact characteristics. ** ** Author: ** Guenhael Le Quilliec (LaMe - Polytech Tours) ** ** Version: ** 2.0 2025/11/21 Various updates and improvements for TOPOPTIM V4.0. ** 1.0 2021/04/15 Initial version ************************************************************************ DEBP TOPOACTI tab*'TABLE' ; * Input data * ********** Wtab = tab.'WTABLE' ; Ltab = Wtab.'LOGIQUE' ; mshB = Wtab.'MAILLAGE_B' ; mshD = Wtab.'MAILLAGE_D' ; oldmshA = Wtab.'MAILLAGE_A' ; oldmshI = Wtab.'MAILLAGE_I' ; LF = Ltab.'ZONE_FIGEE' ; * Active mesh (A) and its intersection (I) with the design zone (D) * ***************************************************************** LIeqlD = VRAI ; LAeqlB = VRAI ; SI (tab.'SEUIL_ELEMENTS_ACTIFS' > 0.0) ; * Detect if the active mesh has changed SI (NON LnewmshA) ; newmshA = oldmshA ; FINS ; * All elements are active SI LAeqlB ; LIeqlA = NON LF ; mshA = mshB ; mshI = mshD ; * Some elements are inactive SINO ; mshA = newmshA ; LIeqlD = FAUX ; SI LF ; LIeqlA = FAUX ; SI (NON LnewmshA) ; mshI = oldmshI ; SINO ; FINS ; SINO ; LIeqlA = VRAI ; mshI = mshA ; FINS ; FINS ; SINO ; LIeqlA = NON LF ; mshA = mshB ; mshI = mshD ; * Detect if the active mesh has changed LnewmshA = NEG oldmshA mshA ; FINS ; Wtab.'MAILLAGE_A' = mshA ; Wtab.'MAILLAGE_I' = mshI ; * Active & intersection models * **************************** SI Ltab.'MECANIQUE' ; SI LnewmshA ; SI LAeqlB ; modMA = Wtab.'MECANIQUE'.'MODELE_B' ; SINO ; FINS ; SI LIeqlD ; modMI = Wtab.'MECANIQUE'.'MODELE_D' ; SINO ; SI LIeqlA ; modMI = modMA ; SINO ; FINS ; FINS ; Wtab.'MECANIQUE'.'MODELE_A' = modMA ; Wtab.'MECANIQUE'.'MODELE_I' = modMI ; SINO ; modMA = Wtab.'MECANIQUE'.'MODELE_A' ; modMI = Wtab.'MECANIQUE'.'MODELE_I' ; FINS ; FINS ; SI Ltab.'THERMIQUE' ; SI LnewmshA ; SI LAeqlB ; modTA = Wtab.'THERMIQUE'.'MODELE_B' ; SINO ; FINS ; SI LIeqlD ; modTI = Wtab.'THERMIQUE'.'MODELE_D' ; SINO ; SI LIeqlA ; modTI = modTA ; SINO ; FINS ; FINS ; Wtab.'THERMIQUE'.'MODELE_A' = modTA ; Wtab.'THERMIQUE'.'MODELE_I' = modTI ; SINO ; modTA = Wtab.'THERMIQUE'.'MODELE_A' ; modTI = Wtab.'THERMIQUE'.'MODELE_I' ; FINS ; FINS ; * Active & intersection penalized physical density * ************************************************ SI Ltab.'MECANIQUE' ; SI LAeqlB ; ZMA = Wtab.'MECANIQUE'.'Z_B' ; SINO ; FINS ; SI LIeqlD ; ZMI = Wtab.'MECANIQUE'.'Z_D' ; SINO ; SI LIeqlA ; ZMI = ZMA ; SINO ; FINS ; FINS ; Wtab.'MECANIQUE'.'Z_A' = ZMA ; Wtab.'MECANIQUE'.'Z_I' = ZMI ; FINS ; SI Ltab.'THERMIQUE' ; SI LAeqlB ; ZTA = Wtab.'THERMIQUE'.'Z_B' ; SINO ; FINS ; SI LIeqlD ; ZTI = Wtab.'THERMIQUE'.'Z_D' ; SINO ; SI LIeqlA ; ZTI = ZTA ; SINO ; FINS ; FINS ; Wtab.'THERMIQUE'.'Z_A' = ZTA ; Wtab.'THERMIQUE'.'Z_I' = ZTI ; FINS ; * Active & intersection sensitivities of the penalized physical density * ********************************************************************* SI Ltab.'MECANIQUE' ; * SI LAeqlB ; * dZMA = Wtab.'MECANIQUE'.'SENSIBILITE_Z_B' ; * SINO ; * dZMA = REDU Wtab.'MECANIQUE'.'SENSIBILITE_Z_B' mshA ; * FINS ; SI LIeqlD ; dZMI = Wtab.'MECANIQUE'.'SENSIBILITE_Z_D' ; SINO ; * SI LIeqlA ; * dZMI = dZMA ; * SINO ; * dZMI = REDU dZMA mshI ; * FINS ; FINS ; * Wtab.'MECANIQUE'.'SENSIBILITE_Z_A' = dZMA ; Wtab.'MECANIQUE'.'SENSIBILITE_Z_I' = dZMI ; FINS ; SI Ltab.'THERMIQUE' ; * SI LAeqlB ; * dZTA = Wtab.'THERMIQUE'.'SENSIBILITE_Z_B' ; * SINO ; * dZTA = REDU Wtab.'THERMIQUE'.'SENSIBILITE_Z_B' mshA ; * FINS ; SI LIeqlD ; dZTI = Wtab.'THERMIQUE'.'SENSIBILITE_Z_D' ; SINO ; * SI LIeqlA ; * dZTI = dZTA ; * SINO ; * dZTI = REDU dZTA mshI ; * FINS ; FINS ; * Wtab.'THERMIQUE'.'SENSIBILITE_Z_A' = dZTA ; Wtab.'THERMIQUE'.'SENSIBILITE_Z_I' = dZTI ; FINS ; * Active & intersection material * ****************************** SI Ltab.'MECANIQUE' ; SI LnewmshA ; SI LAeqlB ; matMA = Wtab.'MECANIQUE'.'CARACTERISTIQUES_B' ; SINO ; FINS ; SI LIeqlD ; matMI = Wtab.'MECANIQUE'.'CARACTERISTIQUES_D' ; SINO ; SI LIeqlA ; matMI = matMA ; SINO ; FINS ; FINS ; Wtab.'MECANIQUE'.'CARACTERISTIQUES_A' = matMA ; Wtab.'MECANIQUE'.'CARACTERISTIQUES_I' = matMI ; SINO ; matMA = Wtab.'MECANIQUE'.'CARACTERISTIQUES_A' ; FINS ; FINS ; SI Ltab.'THERMIQUE' ; SI LnewmshA ; SI LAeqlB ; matTA = Wtab.'THERMIQUE'.'CARACTERISTIQUES_B' ; SINO ; FINS ; SI LIeqlD ; matTI = Wtab.'THERMIQUE'.'CARACTERISTIQUES_D' ; SINO ; SI LIeqlA ; matTI = matTA ; SINO ; FINS ; FINS ; Wtab.'THERMIQUE'.'CARACTERISTIQUES_A' = matTA ; Wtab.'THERMIQUE'.'CARACTERISTIQUES_I' = matTI ; SINO ; matTA = Wtab.'THERMIQUE'.'CARACTERISTIQUES_A' ; FINS ; FINS ; * Active & intersection penalized material * **************************************** SI Ltab.'MECANIQUE' ; SI LIeqlA ; ZmatMI = ZmatMA ; SINO ; FINS ; Wtab.'MECANIQUE'.'CARACTERISTIQUES_Z_A' = ZmatMA ; Wtab.'MECANIQUE'.'CARACTERISTIQUES_Z_I' = ZmatMI ; FINS ; SI Ltab.'THERMIQUE' ; SI LIeqlA ; ZmatTI = ZmatTA ; SINO ; FINS ; Wtab.'THERMIQUE'.'CARACTERISTIQUES_Z_A' = ZmatTA ; Wtab.'THERMIQUE'.'CARACTERISTIQUES_Z_I' = ZmatTI ; FINS ; * Active contact * ************** SI LnewmshA ; SI Ltab.'CONTACT' ; SI (NON LAeqlB) ; SINO ; mshcntA = Wtab.'CONTACT'.'MAILLAGE_B' ; FINS ; Wtab.'CONTACT'.'MAILLAGE_A' = mshcntA ; Wtab.'CONTACT'.'MODELE_A' = modcntA ; Wtab.'CONTACT'.'CARACTERISTIQUES_A' = matcntA ; FINS ; FINS ; * Update number of active elements * ******************************** SI LnewmshA ; FINS ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales