* TOPORSTR PROCEDUR FD218221 23/11/29 21:15:14 11799 ************************************************************************ ** Procedure called by TOPOPTIM for applying geometric restrictions. ** ** Author: ** Guenhael Le Quilliec (LaMe - Polytech Tours) ** ** Version: ** 1.1 2021/03/19 Fixing a minor issue by adding 'SCALAIRE' type for the sensibility ** 1.0 2017/04/18 ************************************************************************ * Criterion to fuse the nodes d0 = 1.0e-9 ; * Node mesh of the barycenters m0 = tab0.'WTABLE'.'MAILLAGE'.'GRAVITE' ; * Switch the sensitivity from element field to node field * Loop on each restriction * Find the next restriction Rstr0 = tab0.'RESTRICTIONS'.&loop0 ; SINO ; QUIT loop0 ; FINS ; * Node mesh of the barycenters of the restricted zone * and its initial sensitivity SI RstrZ0 ; ELIM m0 m1 d0 ; SINO ; m1 = m0 ; f1 = f0 ; FINS ; * Make copies with the prescribed gometric transformation * Fuse the nodes of their supports * And get the mean sensitivity fields ELIM m1 m2 d0 ; f1 = (f1 + f2) / 2.0 ; FINS ; ELIM m1 m2 d0 ; f1 = (f1 + f2) / 2.0 ; FINS ; ELIM m1 m2 d0 ; f1 = (f1 + f2) / 2.0 ; FINS ; SI (Rstr0.'PERIODES' EGA 2) ; SINO ; FINS ; ELIM m1 m2 d0 ; f1 = (f1 + f2) / 2.0 ; SINO ; msh0.(0) = m1 ; fld0.(0) = f1 ; p0 = Rstr0.'PERIODES' ; a0 = 360.0 / p0 ; p1 = Rstr0.'POIN1' ; p2 = Rstr0.'POIN2' ; REPE loop1 (p0 - 1) ; old0 = &loop1 - 1 ; FIN loop1 ; SINO ; p1 = Rstr0.'POIN1' ; REPE loop1 (p0 - 1) ; old0 = &loop1 - 1 ; FIN loop1 ; FINS ; REPE loop1 (p0 - 1) ; f1 = f1 + fld0.&loop1 ; FIN loop1 ; f1 = f1 / p0 ; FINS ; FINS ; msh0.(0) = m1 ; fld0.(0) = f1 ; p0 = Rstr0.'PERIODES' ; v0 = Rstr0.'POIN2' MOIN Rstr0.'POIN1' ; REPE loop1 (p0 - 1) ; old0 = &loop1 - 1 ; loop2 = -1 * &loop1 ; old0 = loop2 + 1 ; FIN loop1 ; REPE loop1 (p0 - 1) ; f1 = f1 + fld0.&loop1 ; loop2 = -1 * &loop1 ; f1 = f1 + fld0.loop2 ; FIN loop1 ; f1 = f1 / p0 ; FINS ; * Final sensitivity SI RstrZ0 ; SINO ; f0 = f1 ; FINS ; FIN loop0 ; * Switch the sensitivity from node field to element field mod1 = tab0.'WTABLE'.'MECANIQUE'.'MODELE'.(1) ; SINO ; mod1 = tab0.'WTABLE'.'THERMIQUE'.'MODELE'.(1) ; FINS ; 'TYPE' 'SCALAIRE' 'GRAVITE' ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales