File: relax.c

package info (click to toggle)
xmorph 1%3A20011220
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,468 kB
  • ctags: 1,534
  • sloc: ansic: 16,401; sh: 2,651; makefile: 556; tcl: 516
file content (37 lines) | stat: -rw-r--r-- 836 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

#include "stdio.h"

#include "../libmorph/mesh.h"

#define SMOOTH_ITERATIONS 20

void smooth_mesh(MeshT *mesh)
{  
  int xi, yi;
  double x,y;

  int lp;
  for(lp =SMOOTH_ITERATIONS ; lp ; lp--) {
    for(xi=0; xi < mesh->nx ; xi++) {      	
	for(yi=0; yi<mesh->ny  ; yi++) {
	  if( 0 ==  meshGetLabel(mesh,xi,yi)) {	  
	    if ( xi == 0 || xi == mesh->nx -1)
	      x=meshGetx(mesh, xi,yi);
	    else
	      x=(meshGetxRefl(mesh, xi+1,yi) +
		 meshGetxRefl(mesh, xi,yi+1) +
		 meshGetxRefl(mesh, xi-1,yi) +
		 meshGetxRefl(mesh, xi,yi-1)) / 4.0 ; 
	    if ( yi == 0 || yi == mesh->ny -1)
	      y=meshGety(mesh, xi,yi);
	    else
	      y=(meshGetyRefl(mesh, xi+1,yi) +
		 meshGetyRefl(mesh, xi,yi+1) +
		 meshGetyRefl(mesh, xi-1,yi) +
		 meshGetyRefl(mesh, xi,yi-1)) / 4.0 ;
	    meshSetNoundo(mesh,xi,yi,x,y);
	  }
	}
      }
  }
}