Coder Social home page Coder Social logo

krober10nd / fmesh Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 2.0 687 KB

A mesh generator based on the DistMesh algorithm written in modern Fortran.

License: GNU General Public License v3.0

Fortran 100.00%
distmesh-algorithm mesh-generator geophysics mesh-sizes anisotropy

fmesh's Introduction

FMesh

A 2D/3D, an-/isotropic triangular mesh generator based on the DistMesh algorithm in modern Fortran


(NOTE: Development on this project has ceased, however, there are many potentially useful things to take from it).

The software will need:

  1. GNU compiler (e.g., gfortran and gcc)
  2. Qhull (static re-entrant libraries)

To install the software:

  1. Enter into the work directory.
  2. In the makefile, change the path to the include directory (CPP) and library directory (LDFLAGS).
  3. In make.inc, change the type of build configuration (i.e., dbg, optimised, etc.)
  4. Run make and the generated binary should be installed in work/bin.

To use the software:

It requires a Planar Straight Line graph (in 2D) or PSLG that describes the boundary of the domain in either ccw or cw order. % The PSLG is a text file called "PSLG.txt" in the working directory in the following format:

5 2 ! # of points and dimension
-1.0 1.0 ! x and y coordinates of each point
1.0 1.0
1.0 -1.0
-1.0 -1.0
-1.0 1.0

Currently the domain has to be a singly-connected polygon (but it likely easy to modify to support mutliply-connected polygons).

It requires the user define their own mesh size function. These are rasters/structured grids than span the entire meshing domain with a minimum grid spacing at least twice as small as the minimum element size. Three grid files that are required are 1) the size of the mesh in the major axis of the circum-ellipses, 2) the size of the mesh in the minor axis of the circum-ellipses, and 3) the angle the major axis of the circum-ellipse makes with the x-axis (in radians). Please see MakeMeshSizes.m for more details in creating these files.

The program is run through the command line type (assuming you've named the files described above like below):

./distmesh.x PSLG.txt MeshSize1.txt MeshSize2.txt MeshAngle.txt

An example metric tensor is:

x,y spans [-2 2]x[-2 2]
MeshSize1(x,y) = 0.005 + 1.5abs(1-(x.^2 + y.^2 ).^0.5);
MeshSize2(x,y) = 0.1
(x.^2 + y.^2).^0.5 + 1.5*abs(1-(x.^2 + y.^2 ).^0.5);
Angle(x,y) = atan(x(x,y)/y(x,y)) + 90 ;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.