! This program generates a micro-strucutre mask and applies it to ! an existing mesh. ! J.Grogan 05/08/11 program Corrosion_Preprocessor ! ! Parameters parameter(max_elements=100000,max_cells=20000,max_fc=100,max_faces=10000) parameter(max_elem_in_cell=50000,max_neigh_per_elem=6,max_neighbours=50) ! ! Variables character(len=256)input character(len=256)input2(2) integer,allocatable,dimension(:)::num_faces integer,dimension(max_elements,max_neighbours)::neighbour integer mesh_type double precision,allocatable,dimension(:,:)::distance double precision,allocatable,dimension(:,:)::nbr_dist double precision,allocatable,dimension(:,:)::cor_faces double precision,dimension(max_elements)::cor_dist double precision,allocatable,dimension(:,:)::ele_centroid ! ! Mesh Type: 2 = 2D, 3 = 3D mesh_type=3 ! allocate(ele_centroid(max_elements,3)) ! Get element centroids call elem_centroids(num_elements,ele_centroid,mesh_type) ! ! Get neighbouring elements allocate(nbr_dist(max_elements,max_neighbours)) do i=1,num_elements icount=1 do j=1,num_elements if(icount>max_neighbours)then rmaxdist=0. do k=1,max_neighbours if(nbr_dist(i,k)>rmaxdist)then rmaxdist=nbr_dist(i,k) index_max_dist=k endif enddo endif cent1x=ele_centroid(i,1) cent1y=ele_centroid(i,2) cent1z=ele_centroid(i,3) cent2x=ele_centroid(j,1) cent2y=ele_centroid(j,2) cent2z=ele_centroid(j,3) dist=sqrt((cent1x-cent2x)*(cent1x-cent2x)+(cent1y-cent2y)*(cent1y-cent2y)& &+(cent1z-cent2z)*(cent1z-cent2z)) if(icount>max_neighbours)then if(dist