Gmsh and Getdp
September 16th, 2013
I have found myself hating to pay for software, especially scientific ones. I am, therefore, always trying to figure out if things can be done with stuff available for free. As far as software available to do scientific word processing is concerned, the paid stuff doesn't even come close to what is available for free. For instance, LaTeX leaves MS-Word in the dust. There is a price to be paid when it comes to the learning curve but LaTeX is an incredibly strong tool which just reeks hardcore utility. I have been trying to find something similar for solving engineering problems. There are a lot of options out there but they often require you to given an arm and a leg for them. For instance, software like COMSOL, ANSYS, ABAQUS etc. are very good I believe but they are quite expensive and, more importantly for me at least, they cloud the underlying mechanism of problem-solving. Nothing too grave for people who just want to use them but for me they leave something to be desired. I recently came across this software which, however, promises other things. The learning curve is steep because there is scant documentation but it looks good in what it can do. So how does it (getdp) work?
All problems in mechanics are basically statements of differential quantities with certain initial conditions and certain boundary conditions. For instance says force equals mass times acceleration. Acceleration is how fast the velocity is changing and velocity is how fast the position of something is changing. A concise way of writing which is which is the differential statement of a simple mass moving under a force.  If we also add the information that this body was sitting around at time then that would constitute the initial conditions which would determine the trajectory that the body would take for all subsequent . The boundary conditions come about when such differential equations are defined over a domain (). For instance, how does heat distribute from a central source (forcing function) on a disk shaped plate (this is ) when the boundary of the plate (this is the boundary of denoted by let's say ) is kept at a certain temperature (this is the boundary condition) given that the whole plate was at 20 degrees at the beginning constitutes a well defined mechanical problem which accepts a unique solution. The mathematical statement is the underlying differential equation of the problem on whose solution cannot always be found analytically. The way to go about it, which is rather general, is to transform it to what is called an integral form. This means that rather than trying to find a which exactly satisfies the differential equation subject to the initial and boundary conditions we try to find that u which minimizes the integral for all suitably chosen functions . This process transforms the differential equation to its equivalent integral form and lies at the heart of the Finite Element Method. By applying the Gauss theorem, surface terms are taken into account which satisfy the boundary conditions. The integral form is also important as fundamental natural laws, as it turns out, can be equivalently expressed in differential or integral forms. For instance saying that Newton's laws holds is equivalent to saying that nature tends to minimize a certain quantity called action (built from potential energy and kinetic energy of the system) as the body moves from one state to another. This principle of least action is an integral representation of nature and can be used to derive the equations of motion of any system.
Anyway, as mentioned above, a reliable way of approximately solving differential equations is to transform them into integral equations and then using Finite Elements to solve them. Getdp is a general set of tools which help one do that. It admits the geometry of the problem through another free software called gmsh (or some other alternatives). Gmsh, by itself, looks like a powerful tool to create geometries and to mesh them. It has a programming language like structure so complicated actions can be carried out with relative ease. Getdp uses this geometry information and accepts the integral formulation of the problem at hand with the associated boundary and initial conditions. All this information is entered through special keywords and programmatic structures. Getdp then uses established Finite Element methods to find a solution to these equations. There appears to be a considerable amount of application of getdp+gmsh to electromagnetic problems but not nearly as much to elasticity problems. My effort would be to describe its application to such problems in the Codes section.
Cool project ! Impressed that you are getting more technical with your blog...esp. the embedded latex code ... Is it the first time ?
I have tried to use it in the past to a very small degree. I used to feel that making the blog technical would hurt the readership until I figured out that it cannot make it any worse :)!