[Gmsh] Change coordinate of a vertex in a GModel using API

Agnese, Marco m.agnese13 at imperial.ac.uk
Tue May 27 17:14:47 CEST 2014

Hi Mikhail,
the problem of adding and deleting a vertex is that I have to redefine also the topology (I think, am I right ?). 
For example let's say that my GModel defining a rectangle: 4 vertices (from 1 to 4), 4 edges (from 1 to 4), 1 lines loops, 1 plane surface. 
Let's say that I want now move thew first vertex and keep everything the same (and obtain a quadrilateral). If I delete the first vertex, the two edges which contain the vertex number 1 need to be deleted and recreated with the new vertex which I want to add. 
In case the geometry is more complicated, maybe I have also to create again the lines loops. 
This procedure is quite inefficient and could become complicated (especially in 3D). 
If I can delete a vertex and add with the new coordinates without recreating my edges this could be a good solution to my problem. For know I recreate from scratch the GModel with the right coordinates, but of course this requires a certain amount of code and more operations to be performed by the code.
Chhers, Marco.
From: Mikhail Artemyev [artemiev.mikhail at gmail.com]
Sent: Tuesday, May 27, 2014 3:51 PM
To: gmsh at geuz.org; Agnese, Marco
Subject: Re: Change coordinate of a vertex in a GModel using API

Hi Marco,

I would suggest to remove a wrong vertex from a model using:

void remove(GVertex *v); // from GModel class

and then to add a new (corrected) one:

void add(GVertex *v) { vertices.insert(v); } // from GModel class

However I didn't try that for myself.

Best regards,

> Hello GMSH users,
> I have a GModel and I want to change the coordinates of a point inside it: just the coordinates of a point , everything in the GModel need to remains exactly the same.
> Is there a way without creating from scratch a new GModel?
> Because if I extract the pointer to a GVertex with the method getVertexByTag I have a const pointer therefore I cannot modify the value but only read it.
> Is there a method to have a non const pointer? Or is there  a method to simply change the coordinates?
> Thank you,
> cheers,
> Marco Agnese.