Reference problem ===================== Geometry --------- .. image:: images/100000000000024200000104D5C0F4BEE56929B4.png :width: 6.0102in :height: 2.6984in .. _RefImage_100000000000024200000104D5C0F4BEE56929B4.png: .. csv-table:: "Ray", ":math:`R\mathrm{=}10.m`" "Thickness", ":math:`t\mathrm{=}0.04`" Coordinates of the points: .. csv-table:: "", ":math:`A` "," :math:`B` "," :math:`C`" ":math:`x` ", "10. ", "0. ", "0." ":math:`y` ", "0. ", "10. ", "0." ":math:`z` ", "0. ", "0. ", "10." Material properties ----------------------- The hemisphere is composed of concrete reinforced by grids. As the objective is only to test controls, the same properties are given to concrete and to grids. :math:`E\mathrm{=}200000\mathit{Pa}`, :math:`\nu \mathrm{=}0.3` Boundary conditions and loads ------------------------------------- Over a quarter of the hemisphere: .. csv-table:: "Point :math:`C` ", "no move in :math:`z`" "Side :math:`\mathrm{AC}` ", "symmetry with respect to plane :math:`\mathit{xz}`" "Side :math:`\mathrm{BC}` ", "symmetry with respect to plane :math:`\mathit{yz}`" "Side :math:`\mathrm{AB}` ", "free" Internal pressure: :math:`P\mathrm{=}10.\mathit{Pa}` Orientation problem --------------------------- It is desired that the reinforcing grids be oriented circumferentially with respect to the given axis. However, given the hemispherical shape considered, a Python function is proposed to achieve it. The principle is as follows: 1. the axis of the hemisphere is noted :math:`Z` 2. for each cell, we calculate the vector indicating the ciconferential direction by :math:`V\mathrm{=}Z\mathrm{\wedge }N` where :math:`N` is the normal to the mesh. Note :math:`V\mathrm{=}\mathrm{[}\mathit{Vx},\mathit{Vy},\mathit{Vz}\mathrm{]}` and define its projection on the :math:`(\mathit{XOY})` plane by :math:`W\mathrm{=}\mathrm{[}\mathit{Vx},\mathit{Vy}\mathrm{,0}\mathrm{]}` 3. we calculate the values of ANGL_REP to be assigned to the current mesh by :math:`\alpha =\mathrm{arctan}(\mathrm{Vy}/\mathrm{Vx})` and :math:`\beta \mathrm{=}\mathrm{-}\mathrm{arctan}(\mathit{Vz}\mathrm{/}\mathit{norm}(W))` The function called LIST_CARA_CIRCONF loops through all grid cells, computes :math:`\alpha` and :math:`\beta`, and creates the keywords: _F (SECTION =20.0, MAILLE =Current_Mesh-Name, EXCENTREMENT =0.0, ANGL_REP =(,)), COEF_RIGI_DRZ =1.E-10 ), and he adds them to a list. This list is then provided to AFFE_CARA_ELEM. So we get the commands: LIST_GRI = LIST_CARA_CIRCONF ( GROUP_MA =' GRILLE ', AXE =( 0.,0.,1. ), MODELE = MODEL, GRILLE =_F (SECTION =20. , EXCENTREMENT =0.,) ) CARA_COQ = AFFE_CARA_ELEM ( MODELE = MODEL, COEF_RIGI_DRZ =0.,), GRILLE = LIST_GRI, ) Finally, note that, formally, LIST_CARA_CIRCONF obeys the following catalog: LIST_CARA_CIRCONF ( GROUP_MA = SIMP (status='o', typ=grma, max='**'), AXE = SIMP (status='o', typ='R', max=3, min=3), MODE = SIMP (status='o', typ=modele_sdaster), GRILLE = FACT (status='f', max=1, SECTION = SIMP (status='o', typ='R'), EXCENTREMENT = SIMP (status='f', typ='R'), COEF_RIGI_DRZ = SIMP (status='f', typ='R'), ), )