.. _d7.01.01-solution: Files fixed ================= Order catalog: .. code-block:: python from.commons import* from.. language.DataStructure import* from.. language.Syntax import* MODI_MAIL = OPER ( name=" MODI_MAIL ", op=190, sd_prod=mesh_sdaster, fr=tr ("Modifying a mesh by translation"), reentrant="o: MAILLAGE ", use= SIMP (status="c", typ=CO), MAILLAGE = SIMP (status="o", typ=mesh_sdaster), TRANSLATION = FACT (status="o", VECTEUR = SIMP (status="o", typ="R", min=2, max=3)), INFO = SIMP (status="f", typ="I", default=1, into =( 1, 2)), ) ``Bibfor/op/op0190.f90`` command routine: .. code-block:: fortran subroutine op0190 () Implicit none #include "asterc/getfac.h" #include "asterc/getres.h" #include "asterfort/as_allocate.h" #include "asterfort/as_deallocate.h" #include "asterfort/assert.h" #include "asterfort/dismoi.h" #include "asterfort/getvid.h" #include "asterfort/getvr8.h" #include "asterfort/jedema.h" #include "asterfort/jemarq.h" #include "asterfort/jeveuo.h" character (len=8):: mesh, result character (len=16):: concept, cmd name character (len=19): chord character (len=24):: vect_core integer: i, j, iret, dim, nbocc, nbnodes real (kind=8), pointer:: vect (:) => null () real (kind=8):: transl (3) real (kind=8), pointer:: coordinate (:) => null () Call jemarq () ! Read the input mesh name: mesh_sdaster, see d6.03.01, §2.1.1 call getvid (" "," MAILLAGE ", scal=mesh, nbret=iret) ASSERT (iret = 1) ! Read the mesh result (must be identical to the input), see d6.03.01, §2.1.5 call parameters (result, concept, cmd name) ASSERT (result == mesh) ! check that TRANSLATION exists, see d6.03.01, §2.1.6 call getfac ('TRANSLATION', nbocc) ASSERT (bocc=1) ! Get the size of the translation vector for a dynamic allocation, see d6.03.01, §2.1.1 call getvr8 (" TRANSLATION "," VECTEUR ", iocc=1, nbval=0, nbret=dim) Sun = -Sun ASSERT (2 <= dim.and. dim <= 3) ! Allocate the vector of size 'dim' AS_ALLOCATE (vr=vect, size=dim) ! Read the translation vector values call getvr8 (" TRANSLATION "," VECTEUR ", iocc=1, nbval=dim, vect=vect) ! Name of the Jeveux vector containing the coordinates of the mesh ! See d4.06.01 for the COORDO object and d4.06.05 for its VALE vector chord=mesh//". COORDO" vect_core=chcoord//". VALE" ! Get the address and the size of this vector call jeveuo (vect_cored, 'E', vr=cored) call tell me ('NB_NO_MAILLA', mesh, 'MAILLAGE', repi=nbnodes) ! Translate the mesh transl = 0.d0 transl = vect ! Loop on the Nodes do i = 1, nbnodes ! Always 3 coordinates in. COORDO Do j = 1, 3 coordinate ((i-1) *3+j) = coordinate ((i-1)*3+j) +transl (j) End Do End Do AS_DEALLOCATE (vr=vect) Call Jedema () End subroutine