29
Appendix A The initial polycrystalline microstructure used in grain growth simulations in the Case Studies II, VI, and XII was generated with the program given below. The number of grains in those simulations was 25; however, there is no limit for the number of grains that program can gen- erate. The program is based on the Voronoi tessellation of the randomly distributed points that is equal to the desired number of grains in the phase-field simulation cell with periodicity. For the Voronoi tessellation, the program utilizes the internal function voronoin of Matlab/Octave. Since the points are randomly distributed, each execution produces different grain microstructures with the same number of points. Program produces two graphical output files. The file Voroni_vertices.outshows the whole Voronoi tessellation results and it can be viewed in gnuplot with the command, plot Voroni_vertices.outwl, as shown in Fig. A.1. The second graphical output file shows the data in output file grain_25.inp which is directly used in the phase-field codes. Again, this graphical output file can be viewed in gnuplot with the command, load final_plot.p”, as shown in Fig. A.2. The code and the resulting output files for Appendix A are included in the downloadable zip files for Chapters 4, 5, and 6. Program voronoi_1.m This program generates random polycrystalline microstructure by using Voronoi tessellation for the phase-field models. Listing: 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 % Generation of polycrystal % 3 % grain microstructure % 4 % with Voronoi tessellation % 5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 6 7 out¼fopen(’Voroni_vertices.out’, ’w’); 8 out1¼fopen(’plot_1.out’,’w’); 9 out2¼fopen(’final_plot.p’,’w’); 10 out3¼fopen(’original_points.out’, ’w’); 11 out4¼fopen(’cell_1.out’,’w’); 12 out5¼fopen(’grain_25.inp’,’w’); 13 14 %---- 15 16 npoin¼25; 17 xmax¼32.0; 18 ymax¼32.0; 19 x0 ¼0.0; The original version of this chapter was revised. An erratum to this chapter can be found at DOI 10.1007/ 978-3-319-41196-5_9 # Springer International Publishing Switzerland 2017 S.B. Biner, Programming Phase-Field Modeling, DOI 10.1007/978-3-319-41196-5 371

0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Appendix A

The initial polycrystalline microstructure used

in grain growth simulations in the Case Studies

II, VI, and XII was generated with the program

given below. The number of grains in those

simulations was 25; however, there is no limit

for the number of grains that program can gen-

erate. The program is based on the Voronoi

tessellation of the randomly distributed points

that is equal to the desired number of grains in

the phase-field simulation cell with periodicity.

For the Voronoi tessellation, the program

utilizes the internal function voronoin of

Matlab/Octave.

Since the points are randomly distributed,

each execution produces different grain

microstructures with the same number of points.

Program produces two graphical output files. The

file “Voroni_vertices.out” shows the whole

Voronoi tessellation results and it can be viewed

in gnuplot with the command, plot

“Voroni_vertices.out” w l, as shown in Fig. A.1.

The second graphical output file shows the data

in output file grain_25.inp which is directly used

in the phase-field codes. Again, this graphical

output file can be viewed in gnuplot with the

command, load “final_plot.p”, as shown in

Fig. A.2.

The code and the resulting output files for

Appendix A are included in the downloadable

zip files for Chapters 4, 5, and 6.

Program

voronoi_1.m

This program generates random polycrystalline

microstructure by using Voronoi tessellation for

the phase-field models.

Listing:

1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2 % Generation of polycrystal %

3 % grain microstructure %

4 % with Voronoi tessellation %

5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

6

7 out¼fopen(’Voroni_vertices.out’,

’w’);

8 out1¼fopen(’plot_1.out’,’w’);

9 out2¼fopen(’final_plot.p’,’w’);

10 out3¼fopen(’original_points.out’,

’w’);

11 out4¼fopen(’cell_1.out’,’w’);

12 out5¼fopen(’grain_25.inp’,’w’);

13

14 %----

15

16 npoin¼25;

17 xmax¼32.0;

18 ymax¼32.0;

19 x0 ¼0.0;

The original version of this chapter was revised. An

erratum to this chapter can be found at DOI 10.1007/

978-3-319-41196-5_9

# Springer International Publishing Switzerland 2017

S.B. Biner, Programming Phase-Field Modeling, DOI 10.1007/978-3-319-41196-5371

Page 2: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Fig. A.1 A typical

Voronoi tessellation results

for the points with their all

nine replicas. The file name

that contains this graphical

result is “Voroni-vertices.out” and the figure is

generated in gnuplot with

the command

plot “Voroni_vertices.out” w l

Fig. A.2 Graphical output of the data that will be used in the phase-field simulations. In the figure, green box is the

simulation cell in the phase-field model. The upper numbers correspond to the grain numbers and the lower ones are the

cell numbers of the Voronoi cells. Blue points correspond to the coordinates of the randomly generated points. The file

name that contains this graphical result is final_plot.p and the figure is generated in gnuplot by using the command

load “final_plot.p”

372 Appendix A

Page 3: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

20 y0 ¼0.0;

21 extra ¼ 2.0;

22

23 %---------------------–

24 % generate random points

25 % for voronoi tessellation

26 %------------------------

27

28 rand(’state’,7)

29

30 x ¼xmax*rand(npoin,1);

31 y ¼ymax*rand(npoin,1);

32

33 %-------

34 % Duplicate the points for symmetry:

35 %-------

36

37 for ipoin¼1:npoin

38 jpoin¼npoin+ipoin;

39 x(jpoin)¼x(ipoin);

40 y(jpoin)¼y(ipoin)-ymax;

41 end

42 %---

43 for ipoin¼1:npoin

44 jpoin¼npoin*2+ipoin;

45 x(jpoin)¼x(ipoin)+xmax;

46 y(jpoin)¼y(ipoin)-ymax;

47 end

48 %---

49 for ipoin¼1:npoin

50 jpoin¼npoin*3+ipoin;

51 x(jpoin)¼x(ipoin)+xmax;

52 y(jpoin)¼y(ipoin);

53 end

54 %---

55 for ipoin¼1:npoin

56 jpoin¼npoin*4+ipoin;

57 x(jpoin)¼x(ipoin)+xmax;

58 y(jpoin)¼y(ipoin)+ymax;

59 end

60 %---

61 for ipoin¼1:npoin

62 jpoin¼npoin*5+ipoin;

63 x(jpoin)¼x(ipoin);

64 y(jpoin)¼y(ipoin)+ymax;

65 end

66 %---

67 for ipoin¼1:npoin

68 jpoin¼npoin*6+ipoin;

69 x(jpoin)¼x(ipoin)-xmax;

70 y(jpoin)¼y(ipoin)+ymax;

71 end

72 %---

73 for ipoin¼1:npoin

74 jpoin¼npoin*7+ipoin;

75 x(jpoin)¼x(ipoin)-xmax;

76 y(jpoin)¼y(ipoin);

77 end

78 %---

79 for ipoin¼1:npoin

80 jpoin¼npoin*8+ipoin;

81 x(jpoin)¼x(ipoin)-xmax;

82 y(jpoin)¼y(ipoin)-ymax;

83 end

84

85 %%

86 %%--- Print-out origional random

points:

87 %%

88

89 for i¼1:npoin

90 fprintf(out3,’%4.6e %14.6e\n’,

x(i),y(i));

91 end

92

93 %%

94 %%-- Print the simulation cell

coordinates:

95 %%

96

97 fprintf(out4,’%14.6e %14.6e\n’,

x0,y0);

98 fprintf(out4,’%14.6e %14.6e\n’,

xmax,y0);

99 fprintf(out4,’%14.6e %14.6e\n’,

xmax,ymax);

100 fprintf(out4,’%14.6e %14.6e\n’,

x0,ymax);

101 fprintf(out4,’%14.6e %14.6e\n’,

x0,y0);

102

103 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼104 %--- generate voronoi diagram

105 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼106

107 [c,f] ¼ voronoin([x,y]);

108

109

Appendix A 373

Page 4: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

110 %----------------

111 %- rearrange voronoin output

112 %- for their connectivity

113 %---------------–

114

115 nvelem ¼size(f);

116

117 ncount¼0;

118 for i¼1:nvelem

119 flag¼1;

120

121 vnodes ¼f{i,:};

122 nnode¼size(vnodes,2);

123

124 for j¼1:nnode

125 if(vnodes(j) ¼¼ 1)

126 flag¼0;

127 end

128 end

129

130 if(flag ¼¼ 1)

131 ncount ¼ ncount+1;

132 for j¼1:nnode

133 lnods(ncount,j)¼vnodes(j);

134 end

135 end

136

137 end

138

139 %--------------------------------

140 % print voronoi results to file

141 % to be viewed later in Voroni_

vertices.out

142 %--------------------------------

143

144 for i¼1:ncount

145 fprintf(out,’# i %d\n’,i);

146

147 nnode¼size(lnods,2);

148

149 for j¼1:nnode

150 kk ¼ lnods(i,j);

151 if(kk ~¼ 0)

152 fprintf(out,’%14.6e %14.6e\n’,

c(kk, 1),c(kk,2));

153 end

154 end

155 kk ¼ lnods(i,1);

156 fprintf(out,’%14.6e %14.6e\n’,

c(kk,1),c(kk,2));

157

158 fprintf(out,’\n’);

159

160 end

161

162 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼163 % Clip far outside voronoi elements

164 % from the simulation cell

165 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼166

167 nelem¼0;

168 for i¼1:ncount

169 flag¼0;

170 for j¼1:nnode

171 kk ¼ lnods(i,j);

172 if(kk ~¼ 0)

173 if(c(kk,1) >¼ -extra && c(kk,1)

<¼ xmax+ extra)

174 if(c(kk,2) >¼ -extra && c(kk,2)

<¼ ymax+ extra)

175 flag¼1;

176 end

177 end

178 end

179 end %j

180

181 if(flag ¼¼ 1)

182 nelem¼nelem+1;

183 jnode¼0;

184 for j¼1:nnode

185 kk¼lnods(i,j);

186 if(kk ~¼0 )

187 jnode¼jnode+1;

188 lnods2(nelem,jnode) ¼lnods(i,j);

189 end

190 end %j

191

192 nnode2(nelem)¼jnode;

193 end % iflag

194 end %icount

195

196

197 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼198 % Assign grain numbers to

199 % voronoi elements

200 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼201 twopi ¼8.0*atan(1.0);

202 epsilon¼1.0e-4;

203

204 for isector¼1:9

374 Appendix A

Page 5: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

205 for ipoin¼1:npoin

206 jpoin¼(isector-1)*npoin+ipoin;

207

208 for ielem¼1:nelem

209 theta¼0.0;

210 nnode¼nnode2(ielem);

211

212 for inode¼1:nnode

213 kk ¼lnods2(ielem,inode);

214

215 xv1¼c(kk,1);

216 yv1¼c(kk,2);

217

218 jnode¼inode+1;

219 if( inode ¼¼ nnode)

220 jnode¼1;

221 end

222

223 jj¼lnods2(ielem,jnode);

224 xv2¼c(jj,1);

225 yv2¼c(jj,2);

226

227 p2x ¼(xv1-x(jpoin));

228 p2y ¼(yv1-y(jpoin));

229

230 p1x ¼(xv2-x(jpoin));

231 p1y ¼(yv2-y(jpoin));

232

233 x1¼sqrt(p1x*p1x+p1y*p1y);

234 x2¼sqrt(p2x*p2x+p2y*p2y);

235

236 if(x1*x2 <¼ epsilon)

237 theta¼twopi;

238 else

239 tx1¼((p1x*p2x+p1y*p2y)/(x1*x2));

240

241 if(abs(tx1) >¼1.0)

242 tx1¼0.9999999999;

243 end

244

245 theta¼theta+acos(tx1);

246

247

248 end

249

250 end %inode

251

252 if(abs(theta-twopi) <¼ epsilon)

253

254 igrain(ielem)¼ipoin;

255

256 end

257

258

259 end % ielem

260

261 end % ipoin

262 end

263

264 %%------------------------

265 %% print out as input file

266 %%------------------------

267

268 [nn1,nn2]¼size(c);

269 nnode¼size(lnods2,2);

270 fprintf(out5,’%5d %5d %5d\n’,

(nn1-1),nnode,nelem);

271

272 for i¼2:nn1

273 fprintf(out5,’ %5d %14.6e

%14.6e\n’, i,c(i,1),c(i,2));

274 end

275

276 for i¼1:nelem

277 fprintf(out5,’%5d’,i);

278 for j¼1:nnode

279 fprintf(out5,’%5d’,lnods2(i,j));

280 end

281 fprintf(out5,’%5d’,igrain(i));

282 fprintf(out5,’\n’);

283 end

284

285 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼286 % graphic output

287 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼288

289

290 for i¼1:nelem

291 fprintf(out1,’# i %d %d\n’,i,

nnode2( i));

292

293 nnode¼size(lnods2,2);

294

295 ncount¼0;

296 xcod ¼0.0;

297 ycod ¼0.0;

298

299 %nnode ¼ nnode2(ielem);

300

301 for j¼1:nnode

302

303 kk ¼ lnods2(i,j);

Appendix A 375

Page 6: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

304 fprintf(out1,’# %5d %5d\n’,j,kk);

305

306 if(kk ~¼ 0)

307 fprintf(out1,’%14.6e %14.6e\n’,

c(kk,1),c(kk,2));

308 ncount¼ncount+1;

309 xcod ¼xcod +c(kk,1);

310 ycod ¼ycod +c(kk,2);

311 end

312 end

313 kk ¼ lnods2(i,1);

314 fprintf(out1,’%14.6e %14.6e\n’,

c(kk,1),c(kk,2));

315 fprintf(out1,’\n’);

316

317 xcod ¼xcod/ncount;

318 ycod ¼ycod/ncount;

319

320 fprintf(out2,’set label ’);fprintf

(out2,’"’); fprintf(out2,’%d’,i);

. . .

321 fprintf(out2,’" at’); fprintf

(out2, ’%14.6e , %14.6e\n’,xcod,

ycod);

322 fprintf(out2,’\n’);

323

324 fprintf(out2,’set label ’);

fprintf(out2,’"’); fprintf

(out2,’%d’,igrain(i)); . . .

325 fprintf(out2,’" at’); fprintf

(out2 ,’%14.6e , %14.6e\n’,

xcod+1.5,ycod+1.5);

326 fprintf(out2,’\n’);

327

328 end

329 fprintf(out2, ’plot "plot_1.out"

w l, "cell_1.out" w l,

"original_points.out"\n’);

330

331 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼332

Line numbers:

7–13: Assign unit names for the output files.

7: Output file name for Voronoi tessellation.

8: Intermediate plot file name.

9: Final graphical output file name.

(continued)

10: File name that contains the coordinates of

the randomly generated points.

11: File name that contains the Cartesian

coordinates of the corners of the

simulation cell.

12: Tabulated output file that will be used in

phase-field simulations.

16: Number of grains in the simulation cell.

17: The length of the simulation cell in the

x-direction.

18: The length of the simulation cell in the

y-direction.

19–20: The origin of the coordinate system.

21: A parameter will be used for trimming the

Voronoi tessellation results.

24–32: Randomly generate the x- and y-coordinatesof the points.

34–84: Replicate the points for their nine periodic

images, for generation of periodic

simulation cell in phase-field simulations.

86–92: Output the coordinates of the points to file.

94–101: Output the corner coordinates of the

simulation cell to file.

104–108: Generate Voronoi tessellation by using

Matlab/Octave function voronoin

111–137: Rearrange the voronoin output for the

connectivity list of the Voronoi cells.

140–160: Print out the Voronoi cell data into

graphical output file Voroni-vertices.outfile. This file can be viewed in gnuplot with

command, plot “Voroni_vertices.out” w l.

163–195: Clip the Voronoi cells that are far away

from the simulation cell for efficiency. This

is achieved with the variable name extra in

lines 173 and 174. Too narrow choice for

the value of extra may result in non-periodic

grain structure in final output. On the other

hand, to large value brings an inefficiency.

Since the results of the Voronoi tessellation

results is not known beforehand, it is set to

an optimum value by trial and error as

shown in Fig. A.2.

198–263: Assign grain numbers to the remaining

Voronoi cells with the point in the box

algorithm.

265–283: Print out the coordinates and the

connectivity list of the Voronoi cells that

have the assigned grain numbers to file. This

file is directly used by the phase-field codes

given in Case Studies II, VI, and XII.

286–330: Write the graphical output files, “plot_1.

out” and “final_plot.p” files.

376 Appendix A

Page 7: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Appendix B

The functions given in this section generate the

Green’s tensor in three-dimension. In order to

avoid the exhaustion of the available memory,

in three-dimension, it is generated with two sep-

arate functions. In the main program, the func-

tion green_tensor1_3D.m should be called only

once after establishing FFT coefficients. Then,

the function green_tensor2_3D.m should be

called at every grid points, whenever, the

Green’s tensor is needed.

These functions can be found in the down-

loadable zip file for Chapter 5.

Function

green_tensor1_3D.m

This function evaluates the coefficients that will

be used in the green_tensor2_3D.m. It needs tobe called only once after establishing the FFT

coefficients in the main program.

Variable and array list:

Nx: Number of grid points in the

x-direction.

Ny: Number of grid points in the

y-direction.

Nz: Number of grid points in the

z-direction.

kx(Nx): Fourier coefficients in the

x-direction.

ky(Ny): Fourier coefficients in the

y-direction.

kz(Nz): Fourier coefficients in the

z-direction.

cm11,cm12,cm44:

Elasticity parameters of the matrix

phase.

(continued)

cp11,cp12,cp44: Elasticity parameters of the second

phase.

omeg11(Nx,Ny,Nz):

Coefficient needed for the Green’s

tensor.

omeg22(Nx,Ny,Nz):

Coefficient needed for the Green’s

tensor.

omeg33(Nx,Ny,Nz):

Coefficient needed for the Green’s

tensor.

omeg12(Nx,Ny,Nz):

Coefficient needed for the Green’s

tensor.

omeg23(Nx,Ny,Nz):

Coefficient needed for the Green’s

tensor.

omeg13(Nx,Ny,Nz):

Coefficient needed for the Green’s

tensor.

Listing:

1 function [omeg11,omeg22,omeg33,

omeg12, omeg23,omeg13] ¼green_tensor1_3D(Nx,Ny,Nz, . . .

2 kx,ky,kz, . . .

3 cm11,cm12,cm44, . . .

4 cp11,cp12,cp44)

5 format long;

6

7 c11 ¼ 0.5*(cm11+cp11);

8 c12 ¼ 0.5*(cm12+cp12);

9 c44 ¼ 0.5*(cm44+cm44);

10

11

12

13 chi¼(c11-c12-2.0*c44)/c44;

14

15 for i¼1:Nx

16 for j¼1:Ny

17 for k¼1:Nz

# Springer International Publishing Switzerland 2017

S.B. Biner, Programming Phase-Field Modeling, DOI 10.1007/978-3-319-41196-5377

Page 8: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

18

19 rr¼kx(i)^2+ky(j)^2+kz(k)^2;

20

21 d0¼c11*rr^3+chi*(c11+c12)*rr*

(kx(i )^2*ky(j)^2 . . .

22 +ky(j)^2*kz(k)^2+kx(i)^2*

kz(k)^2)+chi^2* . . .

23 (c11+2*c12+c44)*kx(i)^2*ky(j)^2

*kz( k)^2;

24

25 if(rr < 1.0e-8)

26 d0¼1.0

27 end

28

29 omeg11(i,j,k)¼(c44*rr^2+(c11+c12)

*chi*ky(j)^2*kz(k)^2 . . .

30 +(c11-c44)*rr*(ky(j)^2

+kz(k)^2))/(c44*d0);

31

32 omeg22(i,j,k)¼(c44*rr^2+(c11+c12)

*c hi*kz(k)^2*kx(i)^2 . . .

33 +(c11-c44)*rr*(kz(k)^2

+kx(i)^2))/(c44*d0);

34

35 omeg33(i,j,k)¼(c44*rr^2+(c11+c12)

*chi*kx(i)^2*ky(j)^2 . . .

36 +(c11-c44)*rr*(kx(i)^2

+ky(j)^2))/(c44*d0);

37

38 omeg12(i,j,k)¼-(c12+c44)*kx(i)*

ky( j)*(rr+chi*kz(k)^2)/(c44*d0);

39

40 omeg23(i,j,k)¼-(c12+c44)*ky(j)*

kz(k )*(rr+chi*kx(i)^2)/(c44*d0);

41

42 omeg13(i,j,k)¼-(c12+c44)*kx(i)*

kz( k)*(rr+chi*ky(j)^2)/(c44*d0);

43

44 end

45 end

46 end

47

48 end %endfunction

Function

green_tensor2_3D.m

This function evaluates the Green’s tensor. It

needs to be called at every grid points, whenever

the value of Green’s tensor is needed in the main

program.

Variable and array list:

Nx: Number of grid points in the

x-direction.

Ny: Number of grid points in the

y-direction.

Nz: Number of grid points in the

z-direction.

i: Current grid number in the

x-direction.

j: Current grid number in the

y-direction.

k: Current grid number in the

z-direction.

kx(Nx): Fourier coefficients in the

x-direction.

ky(Ny): Fourier coefficients in the

y-direction.

kz(Nz): Fourier coefficients in the

z-direction.

omeg11(Nx,Ny,Nz):

Coefficient needed for the

Green’s tensor.

omeg22(Nx,Ny,Nz):

Coefficient needed for the

Green’s tensor.

omeg33(Nx,Ny,Nz):

Coefficient needed for the

Green’s tensor.

omeg12(Nx,Ny,Nz):

Coefficient needed for the

Green’s tensor.

omeg23(Nx,Ny,Nz):

Coefficient needed for the

Green’s tensor.

omeg13(Nx,Ny,Nz):

Coefficient needed for the

Green’s tensor.

tmatx(3,3,3,3): Green’s tensor.

Listing:

1 function [tmatx] ¼ green_tensor2_3D

(Nx,Ny,Nz,kx,ky,kz, . . .

2 omeg11,omeg22,omeg33, . . .

3 omeg12,omeg23,omeg13, . . .

4 i,j,k)

5 format long;

6

7 gmatx(1,1)¼omeg11(i,j,k);

8 gmatx(1,2)¼omeg12(i,j,k);

9 gmatx(1,3)¼omeg13(i,j,k);

10

11 gmatx(2,1)¼omeg12(i,j,k);

12 gmatx(2,2)¼omeg22(i,j,k);

13 gmatx(2,3)¼omeg23(i,j,k);

14

15 gmatx(3,1)¼omeg13(i,j,k);

378 Appendix B

Page 9: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

16 gmatx(3,2)¼omeg23(i,j,k);

17 gmatx(3,3)¼omeg33(i,j,k)

18

19 %-- position vector

20

21 dvect(1)¼xk(i);

22 dvect(2)¼yk(j);

23 dvect(3)¼zk(k);

24

25 %-- Green operator:

26

27 for kk¼1:3

28 for ll¼1:3

29 for ii¼1:3

30 for jj¼1:3

31

32 tmatx(kk,ll,ii,jj)¼ 0.25*(gmatx

(ll,ii)*dvect(jj)*dvect(kk) + . . .

33 gmatx(kk,ii)*dvect(jj)*

dvect(ll) + . . .

34 gmatx(ll,jj)*dvect(ii)*

dvect(kk) + . . .

35 gmatx(kk,jj)*dvect(ii)*

dvect(ll));

36 end

37 end

38 end

39 end

40

41

42 end %endfunction

Appendix B 379

Page 10: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Appendix C

Mesh generation programs are commonly used

in preparation of the input files for the FEM

analysis. There are many freely available

mesh-generating programs such as Gmsh and

also commercial ones requiring licensing such

as Cubit. In this section, a simple, yet very

efficient, self-contained FEM mesh-generating

program is given. The program is the direct

Matlab/Octave implementation of the code

given in [1].

The code produces meshes with triangular,

four- and eight-node isoparametric elements.

The generated input file for the FEM analysis

still needs to be supplemented with the control

parameters, material parameters, and the bound-

ary conditions following the format in

input_fem_pf.m and input_fem_elast.m

functions.

An example input file is annotated, after pro-

gram and function listings, so other input files to

the code can be generated. The code also

produces a graphical output file which can be

viewed in gnuplot with the command, plot

“filename” w l, as shown in Fig. C.1.

The program and the associated functions,

together with the input and output files, can

be found in the downloadable zip file for

Chapter 6.

C.1 Source Codes

Program

fem_mesh_gen.m

This program generates mesh with triangular,

four- and eight-node isoparametric elements on

given geometry.

The program makes calls to the following

functions:

• geom._input.m• gen_mesh4.m

• split.m

• ouput.m

Listing:

1 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼%

2 % %

3 % Fem mesh generator %

4 % %

5 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼%

6

7 global in;

8 global out1;

9 global out2;

10

# Springer International Publishing Switzerland 2017

S.B. Biner, Programming Phase-Field Modeling, DOI 10.1007/978-3-319-41196-5381

Page 11: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

11

12 global melem;

13 global mpoin;

14

15 melem¼5000; %maximum number of

elements to be generated

16 mpoin¼5000; %maximum number

of nodes to be generated

17

18 %----------------------------

19 % open input & output files

20 %----------------------------

21

22 in¼fopen(’mesh_hole_1.inp’,’r’);

23 out1¼fopen(’mesh_hole_fem.

inp’,’w’);

24 out2¼fopen(’mesh_hole_1.plt’,

’w’);

25

26 %----------------------------

27 % geometry input

28 %----------------------------

29

30 [nbloc, gpoin, nnode, ndime, gnods,

gmatn, . . .

31 gcord] ¼ geom_input();

32

33 %----------------------------

34 % generate mesh

35 %----------------------------

36 [nelem,npoin,lnods,coord,matno]

¼ gen_mesh4(nbloc, gpoin, nnode,

ndime, . . .

37 gnods, gmatn, gcord, gmatn);

38

39 %----------------------------

40 % generate triangler elements

41 %----------------------------

42

43

44 if(nnode ¼¼ 3)

45 [nelem,lnods,npoin,coord,matno]¼split(nelem,ndime,lnods, . . .

46 npoin,coord,nnode,matno);

47 end

48

49 %---------------------------

50 % output results

51 %---------------------------

Fig. C.1 FEMmesh generated from the input file,mesh_hole_1.inp, with the programmesh_gem_fem.m. The figure is

plotted in gnuplot with the command, plot “mesh_hole_1.plt” wl

382 Appendix C

Page 12: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

52 out_put(npoin,nelem,nnode,ndime,

lnods,coord,matno);

53

54 disp(’Done’)

55 disp(’Number of elements

generated: ’);disp(nelem);

56 disp(’Number of nodes generated: ’);

disp(npoin);

57

Function

geom._input.m

This function reads the topologic information

regarding geometry, material information, and

the types of finite elements to be generated.

Listing:

1 function[nbloc, gpoin, nnode, ndime,

gnods, gmatn, . . .

2 gcord] ¼ geom_input()

3

4

5 global in;

6

7 %---------------------------

8 % read the control cards

9 %---------------------------

10

11 gpoin ¼ fscanf(in,’%d’,1);

12 nbloc ¼ fscanf(in,’%d’,1);

13 nnode ¼ fscanf(in,’%d’,1);

14 ndime ¼ fscanf(in,’%d’,1);

15

16 lnode ¼ 8; %number of node per block

17 %---------------------------

18 % read block nodes

19 %---------------------------

20

21 for ibloc¼1:nbloc

22

23 ix ¼ fscanf(in,’%d’,[1,1]);

24 idumy ¼ fscanf(in,’%d %d %d %d %d %d

%d %d’,[8,1]);

25

26 for inode ¼ 1: lnode

27

28 gnods(ix,inode)¼idumy(inode);

29 end

30

31 ix ¼ fscanf(in,’%d’,[1,1]);

32 gmatn(ibloc) ¼ ix;

33 end

34

35 %----------------------------

36 % read coordinates

37 %----------------------------

38

39 gcord ¼ zeros(gpoin,ndime);

40

41 for ignod ¼ 1:gpoin

42

43 ix¼fscanf(in,’%d’,[1,1]);

44 dummy ¼ fscanf(in, ’%lf %lf’, [2,1]);

45

46 for idime ¼1:ndime

47 gcord(ix,idime) ¼ dummy(idime);

48 end

49 end

50

51

52 end %endfunction;

Function

gen_mesh4.m

This function generates the FEM mesh by

subdividing the each block defining the geome-

try. The common nodes at the subdivision

boundaries are eliminated; therefore, there are

no nodes with different node numbers and shar-

ing the identical Cartesian coordinates.

The function makes calls to the following

functions:

• srfq.m

• goto_100.m

Listing:

1 function [nelem,npoin,lnods,coord,

matno] ¼ gen_mesh4(nbloc, gpoin,

nnode, ndime, . . .

2 tnods, gmatn, tcord, tmato)

Appendix C 383

Page 13: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

3

4 global in;

5 global melem; % maximum number of

elements to be generated

6 global mpoin; % maximum number of

nodes to be generated

7

8 lnode ¼ 8;

9

10 npont ¼ gpoin;

11

12 mnode ¼ 4;

13 if(nnode ¼¼ 8)

14 mnode¼8;

15 end

16 knode ¼ mnode/4;

17 fnode ¼ knode;

18 %

19 coord ¼ zeros(mpoin,ndime);

20 lnods ¼ zeros(melem,mnode);

21 npoin ¼ 0;

22 nelem ¼ 0;

23

24 iflag¼0;

25 for ibloc ¼ 1:nbloc

26

27 %---------------------------------

28 % read block subdivision data

29 %---------------------------------

30 kbloc ¼ fscanf(in,’%d’,[1,1]);

31 ndivx ¼ fscanf(in,’%d’,[1,1]);

32 ndivy ¼fscanf(in,’%d’,[1,1]);

33

34 weitx ¼ zeros(ndivx+10,1);

35 weity ¼ zeros(ndivy+10,1);

36

37 wx ¼ fscanf(in,’%lf’,[1,1]);

38

39 for idivx¼1:ndivx

40

41 %weitx(idivx)¼fscanf(in,’%lf’,

[1,1]);

42

43 weitx(idivx)¼wx;

44 end

45

46 wy ¼ fscanf(in,’%lf’,[1,1]);

47

48 for idivy¼1:ndivy

49

50 %weity(idivy)¼fscanf(in,’%lf’,

[1,1]);

51

52 weity(idivy)¼wy;

53 end

54

55 %---------------------------------

56 % divide the block into the elements

57 %---------------------------------

58 total ¼ 0.0;

59

60 for idivx¼1:ndivx

61

62 if(weitx(idivx) ¼¼ 0.0)

63 weitx(idivx) ¼1.0;

64 end

65 total ¼ total+weitx(idivx);

66 end

67 xnorm¼2.0/total;

68

69 total ¼ 0.0;

70

71 for idivy¼1:ndivy

72

73 if(weity(idivy) ¼¼ 0.0)

74 weity(idivy) ¼1.0;

75 end

76 total ¼ total+weity(idivy);

77 end

78 ynorm¼2.0/total;

79

80 nxtwo ¼ ndivx*knode+1;

81 nytwo ¼ ndivy*knode+1;

82

83 iasey ¼ 0;

84 etasp ¼-1.0;

85 kwety ¼ 0;

86 konty ¼ -1;

87

88 %---------------------------–

89

90 for iytwo¼1:nytwo %do 160

91

92 iasey ¼ iasey+1;

93 if(nnode ~¼ 8 && iasey ¼¼ 3)

94 iasey ¼2;

95 end

96

97 if(nnode ¼¼ 8 && iasey ¼¼ 4)

98 iasey ¼2;

384 Appendix C

Page 14: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

99 end

100

101 iasex¼0;

102 exisp¼-1.0;

103 kwetx¼0;

104 kontx¼-1;

105

106 for ixtwo¼1:nxtwo

107

108 iasex¼iasex+1;

109 if(nnode ~¼8 && iasex ¼¼ 3)

110 iasex¼2;

111 end

112

113 if(nnode ¼¼ 8 && iasex ¼¼ 4)

114 iasex¼2;

115 end

116

117 if(iasex ¼¼ 2 && iasey ¼¼2 &&

nnode ¼¼ 8)

118

119 [kwetx,kontx,exisp] ¼ goto_100

(exisp,xnorm,knode,fnode,kwetx,

kontx,weitx);

120

121 continue

122 end

123

124 npoin ¼ npoin+1;

125

126 [shape] ¼sfrq(exisp,etasp);

127

128 for inode¼1:lnode

129

130 jtemp¼tnods(ibloc,inode);

131 for idime¼1:ndime

132 coord(npoin,idime)¼coord(npoin,

idime)+shape(inode) . . .

133 *tcord(jtemp,idime);

134 end

135 end

136

137 if(knode ¼¼ 1)

138 if(iasex ~¼ 2 || iasey ~¼2)

139

140 [kwetx,kontx,exisp] ¼ goto_100

(exisp,xnorm,knode,fnode,kwetx,

kontx,weitx);

141

142 continue

143 end

144

145

146 nelem¼nelem+1;

147 jpoin¼npoin-nxtwo;

148 lnods(nelem,1)¼jpoin-1;

149 lnods(nelem,2)¼jpoin;

150 lnods(nelem,3)¼npoin;

151 lnods(nelem,4)¼npoin-1;

152 matno(nelem)¼tmato(ibloc);

153

154 [kwetx,kontx,exisp] ¼ goto_100

(exisp,xnorm,knode,fnode,kwetx,

kontx,weitx);

155

156 continue

157 end

158

159 if(knode ¼¼ 2)

160

161 if((iasex ~¼3) || (iasey ~¼3))

162

163 [kwetx,kontx,exisp] ¼ goto_100

(exisp,xnorm,knode,fnode,kwetx,

kontx,weitx);

164

165 continue

166 end

167

168

169 nelem¼nelem+1;

170 ipoin¼npoin-ixtwo-ndivx+

(ixtwo-1)/2;

171 jpoin¼npoin-nxtwo-ndivx-1;

172 lnods(nelem,1)¼jpoin-2;

173 lnods(nelem,2)¼jpoin-1;

174 lnods(nelem,3)¼jpoin;

175 lnods(nelem,4)¼ipoin;

176 lnods(nelem,5)¼npoin;

177 lnods(nelem,6)¼npoin-1;

178 lnods(nelem,7)¼npoin-2;

179 lnods(nelem,8)¼ipoin-1;

180 matno(nelem) ¼tmato(ibloc);

181

182 [kwetx,kontx,exisp] ¼ goto_100

(exisp,xnorm,knode,fnode,kwetx,

kontx,weitx);

183

184

185 end

Appendix C 385

Page 15: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

186 end

187

188 if(knode ¼¼ 1)

189 kwety¼kwety+1;

190 etasp ¼etasp+ynorm*weity(kwety)/

fnode;

191 end

192 if(knode ¼¼ 2)

193 if(konty < 0 )

194 kwety¼kwety+1;

195 end

196 konty¼konty*(-1);

197 etasp¼etasp+ynorm*weity(kwety)/

fnode;

198 end

199

200 end

201

202 end

203

204

205 %--------------------------------

206 % eliminate the duplicate nodes

207 % sharing same locations

208 %--------------------------------

209

210 nrepn¼0;

211

212 for ipoin¼1:npoin

213

214 if(nrepn ~¼ 0)

215 for irepn¼1:nrepn

216 iflag¼0;

217 if(ipoin ¼¼ lrepn(irepn))

218 iflag¼1;

219 break

220 end

221 end

222 end

223

224 if(iflag ¼¼ 0)

225 lpoin¼ipoin+1;

226 for jpoin¼lpoin:npoin

227 total¼abs(coord(ipoin,1)

-coord(jpoin,1)) + . . .

228 abs(coord(ipoin,2)-coord

(jpoin,2));

229 if(total > 0.00001)

230 continue

231 end

232

233 nrepn ¼nrepn+1;

234 lrepn(nrepn)¼jpoin;

235 lasoc(nrepn)¼ipoin;

236 %end

237 end

238

239 end

240 end

241

242 if(nrepn ~¼ 0)

243

244 index¼0;

245 for ipoin¼1:npoin

246 for irepn¼1:nrepn

247 iflag¼0;

248 if(lrepn(irepn) ¼¼ ipoin)

249 iflag ¼1;

250 break;

251 end

252 end

253

254 if(iflag ¼¼ 0)

255 continue

256 end

257

258 index¼index+1;

259 lfinn(index)¼lrepn(irepn);

260 lfasc(index)¼lasoc(irepn);

261 end

262

263 for irepn¼1:nrepn

264 lrepn(irepn)¼lfinn(irepn);

265 lasoc(irepn)¼lfasc(irepn);

266 end %do_250

267

268 for irepn¼1:nrepn

269 for ielem¼1:nelem

270 for inode¼1:mnode

271 if(lnods(ielem,inode) ¼¼ lrepn

(irepn))

272 lnods(ielem,inode)¼lasoc(irepn);

273 end

274 end

275 end

276 end

277

278 for ipoin¼1:npoin

279

280 for irepn¼1:nrepn

386 Appendix C

Page 16: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

281 iflag¼0;

282 if(ipoin ¼¼ lrepn(irepn))

283 iflag¼1;

284 break;

285 end

286 end

287

288 if(iflag ¼¼ 1)

289 continue;

290 end

291

292

293 if(ipoin < lrepn(1))

294 continue;

295 end

296

297 idiff¼ipoin-nrepn;

298 if(ipoin <¼ lrepn(irepn))

299 for irepn¼1:nrepn

300 krepn¼nrepn-irepn+1;

301 if(ipoin < lrepn(krepn))

302 idiff¼ipoin-krepn+1;

303 end

304 end

305 end

306

307 for idime¼1:ndime

308 coord(idiff,idime)¼coord

(ipoin,idime);

309 end

310

311 end

312

313

314 for ielem¼1:nelem

315 iflag¼0;

316 for inode¼1:mnode

317

318 nposi¼lnods(ielem,inode);

319 for irepn¼1:nrepn

320 iflag¼0;

321 if(nposi ¼¼ lrepn(irepn))

322 iflag¼1;

323 break;

324 end

325 end

326

327 if(iflag ¼¼ 1)

328 continue;

329 end

330

331 if(nposi < lrepn(1))

332 continue;

333 end

334

335 idiff¼nposi-nrepn;

336 if(nposi <¼ lrepn(nrepn))

337 for irepn¼1:nrepn

338 krepn¼nrepn-irepn+1;

339 if(nposi < lrepn(krepn))

340 idiff¼nposi-krepn+1;

341 end

342

343 end

344 end

345

346 lnods(ielem,inode)¼idiff;

347 end

348 end

349 end

350

351 npoin¼npoin-nrepn;

352

353 end %endfunction

354

355 %¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼

Function

goto_100.m

This function acts as an equivalent to the goto

statements in the original code.

Listing:

1 function [kwetx,kontx,exisp] ¼goto_100(exisp,xnorm,knode,fnode,

kwetx,kontx,weitx)

2

3 if(knode ¼¼ 1)

4 kwetx ¼ kwetx+1;

5 exisp¼exisp+xnorm*weitx(kwetx)/

fnode;

6 end

7

8

9 if(knode ¼¼ 2)

10 if(kontx < 0)

11 kwetx ¼ kwetx+1;

12 end

Appendix C 387

Page 17: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

13

14 kontx¼kontx*(-1);

15 exisp¼exisp+xnorm*weitx(kwetx)/

fnode;

16 end

17

18

19 end %endfunction

Function

sfrq.m

This function evaluates the shape functions of

eight-node isoparametric elements.

Listing:

1 function [shape] ¼ sfrq(s,t)

2

3 ss¼s*s;

4 tt¼t*t;

5 st¼s*t;

6 sst¼s*s*t;

7 stt¼s*t*t;

8

9 shape(1)¼(-1.0+st+ss+tt-sst-stt)/

4.0;

10 shape(2)¼(1.0-t-ss+sst)/2.0;

11 shape(3)¼(-1.0-st+ss+tt-sst+stt)/

4.0;

12 shape(4)¼(1.0+s-tt-stt)/2.0;

13 shape(5)¼(-1.0+st+ss+tt+sst+stt)/

4.0;

14 shape(6)¼(1.0+t-ss-sst)/2.0;

15 shape(7)¼(-1.0-st+ss+tt+sst-stt)/

4.0;

16 shape(8)¼(1.0-s-tt+stt)/2.0;

17

18 end %endfunction

Function

split .m

If the geometry is to be meshed with triangular

isoparametric elements, first four node elements

are generated in function gen_mesh4.m and these

four node elements are divided along their

shortest diagonal forming two triangular

elements in function split. The element connec-

tivity list also updated resulting from this subdi-

vision of four node elements.

Listing:

1 function [nelem,lnods,npoin,coord,

matno]¼split(nelem,ndime,lnods,. . .

2 npoin,coord,nnode,matno)

3

4

5

6 kount¼0;

7 mnode¼4;

8

9 for ielem¼1:nelem

10 notal¼nelem+ielem;

11 matno(notal)¼matno(ielem);

12 for inode¼1:mnode

13 lnods(notal,inode)¼lnods(ielem,

inode);

14 end

15 end

16

17 for ielem¼1:nelem

18 notal¼nelem+ielem;

19 for inode¼1:mnode

20 index¼lnods(notal,inode);

21 ltemp(inode)¼index;

22 for idime¼1:ndime

23 corde(inode,idime)¼coord(index,

idime);

24 end

25 end

26

27 diag1¼sqrt((corde(1,1)-corde

(3,1))^2 +(corde(1,2)- . . .

28 corde(3,2))^2);

29 diag2¼sqrt((corde(2,1)-corde

(4,1))^2 +(corde(2,2)- . . .

30 corde(4,2))^2);

31 difer¼diag1-diag2;

32 if(difer <¼1.0e-9)

33 kount¼kount+1;

34 lnods(kount,1)¼ltemp(1);

35 lnods(kount,2)¼ltemp(2);

36 lnods(kount,3)¼ltemp(3);

37 matno(kount)¼matno(notal);

38 kount¼kount+1;

39 lnods(kount,1)¼ltemp(1);

40 lnods(kount,2)¼ltemp(3);

388 Appendix C

Page 18: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

41 lnods(kount,3)¼ltemp(4);

42 matno(kount)¼matno(notal);

43 end

44 if(difer > 1.0e-9)

45 kount¼kount+1;

46 lnods(kount,1)¼ltemp(1);

47 lnods(kount,2)¼ltemp(2);

48 lnods(kount,3)¼ltemp(4);

49 matno(kount)¼matno(notal);

50 kount¼kount+1;

51 lnods(kount,1)¼ltemp(2);

52 lnods(kount,2)¼ltemp(3);

53 lnods(kount,3)¼ltemp(4);

54 matno(kount)¼matno(notal);

55 end

56 end

57 nelem¼nelem*2;

58

59 end %endfunction

Function

output.m

This function outputs the Cartesian coordinates of

the nodes and the element connectivity list to file.

This file needs to be supplemented with the con-

trol parameters, material parameters, and the

boundary conditions following the format in

input_fem_pf.m and input_fem_elast.m functions.

The code also produces a graphical output file

which can be viewed in gnuplot with the com-

mand, plot “filename” w l, as shown in Fig. C.1.

Listing:

1 function out_put(npoin,nelem,nnode,

ndime,lnods,coord,matno)

2

3 global out1;

4 global out2;

5

6

7 %---------------------------------

8 % write to file with the FEM input

file format

9 %---------------------------------

10

11 fprintf(out1,’%5d %5d\n’,npoin,

nele m);

12 for ielem¼1:nelem

13 fprintf(out1,’%5d’,ielem);

14 for inode¼1:nnode

15 fprintf(out1,’%5d’,lnods(ielem,

inode));

16 end

17 fprintf(out1,’%5d’,matno(ielem));

18 fprintf(out1,’\n’);

19 end

20

21 for ipoin¼1:npoin

22 fprintf(out1,’%5d’,ipoin);

23 for idime¼1:ndime

24 fprintf(out1,’%14.6e’,coord(ipoin,

idime));

25 end

26 fprintf(out1,’\n’);

27 end

28

29 %---------------------------------

30 % write to file for the gnuplot

31 %---------------------------------

32

33 for ielem¼1:nelem

34 fprintf(out2,’#element no: %5d\n’,

ielem);

35 for inode¼1:nnode

36 lnode¼lnods(ielem,inode);

37 fprintf(out2,’%14.6e %14.6e\n’,

coord(lnode,1),coord(lnode,2));

38 end

39 lnode¼lnods(ielem,1);

40 fprintf(out2,’%14.6e %14.6e\n’,

coord(lnode,1),coord(lnode,2));

41 fprintf(out2,’\n’);

42 end

43

44

45 end %endfunction

Example Input File

mesh_hole_1.inp

Listing:

1 40 8 4 2

2 1 1 2 3 9 14 13 12 8 1

3 2 3 4 5 10 16 15 14 9 1

4 3 5 6 7 11 18 17 16 10 1

Appendix C 389

Page 19: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

5 4 12 13 14 20 25 24 23 19 1

6 5 16 17 18 22 29 28 27 21 1

7 6 23 24 25 31 36 35 34 30 1

8 7 25 26 27 32 38 37 36 31 1

9 8 27 28 29 33 40 39 38 32 1

10 1 0.0 0.0

11 2 1.875 0.0

12 3 3.75 0.0

13 4 5.0 0.0

14 5 6.25 0.0

15 6 8.125 0.0

16 7 10.0 0.0

17 8 0.0 1.875

18 9 3.75 1.875

19 10 6.25 1.875

20 11 10.0 1.875

21 12 0.0 3.75

22 13 1.875 3.75

23 14 3.75 3.75

24 15 5.0 3.75

25 16 6.25 3.75

26 17 8.125 3.75

27 18 10.0 3.75

28 19 0.0 5.0

29 20 3.75 5.0

30 21 6.25 5.0

31 22 10.0 5.0

32 23 0.0 6.25

33 24 1.875 6.25

34 25 3.75 6.25

35 26 5.0 6.25

36 27 6.25 6.25

37 28 8.125 6.25

38 29 10.0 6.25

39 30 0.0 8.125

40 31 3.75 8.125

41 32 6.25 8.125

42 33 10.0 8.125

43 34 0.0 10.0

44 35 1.875 10.0

45 36 3.75 10.0

46 37 5.0 10.0

47 38 6.25 10.0

48 39 8.125 10.0

49 40 10.0 10.0

50 1 24 24

51 1.0 1.0

52 2 16 24

53 1.0 1.0

54 3 24 24

55 1.0 1.0

56 4 24 16

57 1.0 1.0

58 5 24 16

59 1.0 1.0

60 6 24 24

61 1.0 1.0

62 7 16 24

63 1.0 1.0

64 8 24 24

65 1.0 1.0

Line numbers:

1: Number of nodes, number of subdivisions,

element type for generated mesh (three is for

triangular elements, four is four node elements,

and eight is for eight node elements), number

of materials.

2–9: Subdivision number, next eight numbers are for

subdivision connectivity list (subdivisions are

described with eight nodes and their listing is

anti-clock direction), material number for this

subdivision.

10–49: Node number, Cartesian coordinates of

the node.

50: Subdivision number, number of elements in the

x-direction into which the subdivision is to be

divided, number of elements in the y-directioninto which the subdivision is to be divided.

51: Weighting factors for the divisions in the x andy-directions, respectively.

52–65: Lines 50 and 51 are repeated for each

remaining subdivisions.

The tabulated output file, mesh_hole_fem.inp,needs to be supplemented with the control

parameters, material parameters, and the bound-

ary conditions following the format in

input_fem_pf.m and input_fem_elast.m

The graphical output given in Fig. C.1 shows

the resulting FEM mesh with four-node

isoparametric elements.

References

1. Hinton E, Owen DRJ (1979) An introduction

to finite element computations. Pineridge

Press, Swansea, UK

390 Appendix C

Page 20: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Appendix D

In this section, the necessary formulas are

presented for the extension of the three solutions

methodologies developed in the text to three-

dimension.

The reader should be aware of the numbers of

unknowns, hence, the computational effort

required to solve the number of equations increases

substantially in three-dimension. For example, in a

simulation cell discretized with 128 � 128 � 128

grid points in three-dimension, the number of

unknowns are 2097152; whereas, a simulation cell

discretized with 128 � 128 grid points yields only

16384 unknowns in two-dimensions.

For the finite difference and the Fourier spec-

tral methods, the extension to three-dimension is

straightforward and requires little effort. On the

other hand, the similar extension of finite-

element method involves more substantial

changes to the codes, even though the overall

structures of the codes remain the same.

D.1 Extension of Two-DimensionalFinite Difference Methodto Three-Dimension

For three-dimensional stencil, the finite difference

approximation of theLaplace operator∇2 involves

minimum seven points as shown in Fig. D.1.

With these seven points, the Laplace operator

takes the form:

∇2ui, j,k� � ¼ ui�1, j,k � 2ui, j,k þ uiþ1, j,k

Δx2þ ui, j�1,k � 2ui, j,k þ ui, jþ1,k

Δy2

þ ui, j,k�1 � 2ui, j,k þ ui, j,kþ1

Δz2

ðD:1Þ

where Δx, Δy, and Δz are the grid spacing

between two grid points in the x-, y-, and z-directions, respectively. In three-dimension, the

periodicity now should be enforced for the grid

points lying on the six surfaces, rather than the

edges as in two-dimension.

D.2 Extension of Two-DimensionalFourier Spectral Methodto Three-Dimensions

A three-dimensional Fourier spectral phase-

field method is already developed in case

i,j,k i+1,j,k

i-1,j,k i,j+1,k

i,j-1,k

i,j,k+1

i,j,k-1xy

z

Fig. D.1 A schematic node ordering representation for

three-dimensional finite difference grid

# Springer International Publishing Switzerland 2017

S.B. Biner, Programming Phase-Field Modeling, DOI 10.1007/978-3-319-41196-5391

Page 21: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

study-XVI with the source codes pfc_3D_v1.m(in longhand format) and pfc_3D_v2.m

(optimized for Matlab/Octave). These two

source codes will provide a template for the

solution of other phase-field models by utilizing

the Fourier spectral method. In addition,

functions for three-dimensional Green’s tensor

are given in Appendix B.

As can be seen from these codes, apart

from preparing Fourier coefficients for three-

dimension, the solution utilizes two build

in functions in Matlab/Octave. These are:

fftn( ) for the forward Fourier transformations

and ifftn( ) for the inverse Fourier

transformations.

D.3 Extension of Two-DimensionalFEM Method to Three-Dimension

Similar to two-dimensional elements (Fig. 6.1),

for three-dimensional eight-node and 20-node

isoparametric elements the local coordinate sys-

tem defined by ζ, η, and ξ is located at the center

of the elements, as shown in Fig. D.2. They take

the values of �1 � ζ � 1, �1 � η � 1, and

�1 � ξ � 1.

Their shape functions must satisfy the

conditions:

XN

eð Þi ζ; η; ξð Þ ¼ 1 ðD:2Þ

and

Neð Þi ζj; ηj; ξj� � ¼ 1 if i ¼ j

0 if i 6¼ j

�ðD:3Þ

For eight-node isoparametric elements the

shape functions meeting these requirements are:

N1 ¼ 1

81� ςð Þ 1� ηð Þ 1� ξð Þ

N2 ¼ 1

81þ ζð Þ 1� ηð Þ 1� ξð Þ

N3 ¼ 1

81þ ζð Þ 1þ ηð Þ 1� ξð Þ

N4 ¼ 1

81� ζð Þ 1þ ηð Þ 1� ξð Þ

N5 ¼ 1

81� ζð Þ 1� ηð Þ 1þ ξð Þ

N6 ¼ 1

81þ ζð Þ 1� ηð Þ 1þ ξð Þ

N7 ¼ 1

81þ ζð Þ 1þ ηð Þ 1þ ξð Þ

N8 ¼ 1

81� ζð Þ 1þ ηð Þ 1þ ξð Þ

ðD:4Þ

The corresponding shape functions for

20-node isoparametric elements for corner

nodes are:

ζ

η

ξ

ζ

η

ξ

1 2

34

5 6

78

1 2

34

5 6

78

9

101112

13 14

15

16

17 18

1920

x

yz

Fig. D.2 Global and local definition of eight-node and 20-node isoparametric elements

392 Appendix D

Page 22: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

N1 ¼ �1

81� ζð Þ 1� ηð Þ 1� ξð Þ 2þ ζ þ ηþ ξð Þ

N2 ¼ �1

81þ ζð Þ 1� ηð Þ 1� ξð Þ 2� ζ þ ηþ ξð Þ

N3 ¼ �1

81þ ζð Þ 1þ ηð Þ 1� ξð Þ 2� ζ � ηþ ξð Þ

N4 ¼ �1

81� ζð Þ 1þ ηð Þ 1� ξð Þ 2þ ζ � ηþ ξð Þ

N5 ¼ �1

81� ζð Þ 1� ηð Þ 1þ ξð Þ 2þ ζ þ η� ξð Þ

N6 ¼ �1

81þ ζð Þ 1� ηð Þ 1þ ξð Þ 2� ζ þ η� ζð Þ

N7 ¼ �1

81þ ζð Þ 1þ ηð Þ 1þ ξð Þ 2� ζ � η� ξð Þ

N8 ¼ �1

81� ζð Þ 1þ ηð Þ 1þ ξð Þ 2þ ζ � η� ξð Þ

ðD:5aÞand for mid side nodes are

N9 ¼ 1

41� ζð Þ 1þ ζð Þ 1� ηð Þ 1� ξð Þ N10 ¼ 1

41� ηð Þ 1þ ηð Þ 1þ ζð Þ 1� ξð Þ

N11 ¼ 1

41� ζð Þ 1þ ζð Þ 1þ ηð Þ 1� ξð Þ N12 ¼ 1

41� ηð Þ 1þ ηð Þ 1� ζð Þ 1� ξð Þ

N13 ¼ 1

41� ζð Þ 1þ ζð Þ 1� ηð Þ 1þ ξð Þ N14 ¼ 1

41� ηð Þ 1þ ηð Þ 1þ ζð Þ 1þ ξð Þ

N15 ¼ 1

41� ζð Þ 1þ ζð Þ 1þ ηð Þ 1þ ξð Þ N16 ¼ 1

41� ηð Þ 1þ ηð Þ 1� ζð Þ 1þ ξð Þ

N17 ¼ 1

41� ξð Þ 1þ ξð Þ 1� ζð Þ 1� ηð Þ N18 ¼ 1

41� ξð Þ 1þ ξð Þ 1þ ζð Þ 1� ηð Þ

N19 ¼ 1

41� ξð Þ 1þ ξð Þ 1þ ζð Þ 1þ ηð Þ N20 ¼ 1

41� ξð Þ 1þ ξð Þ 1� ζð Þ 1þ ηð Þ

ðD:5bÞ

Any point (ζ, η, ξ) within an element the x-,

y-, and z-coordinates are again obtained from

isoparametric representation:

x ζ; η; ξð Þ ¼Xni¼1

Neð Þi x

eð Þi

y ζ; η; ξð Þ ¼Xni¼1

Neð Þi y

eð Þi

z ζ; η; ξð Þ ¼Xni¼1

Neð Þi z

eð Þi

ðD:6Þ

where Ni(e)(ζ, η, ζ) are the shape functions of

the element (Eqs. D.4, D.5a and D.5b) and xi(e),

yi(e), zi

(e) are the nodal coordinates in the Car-

tesian coordinate system.

The Cartesian derivative of any function, f,defined over the element follows the similar

expressions (Eqs. 6.2 through 6.6). Thus, in

three-dimension:

f ζ; η; ξð Þ ¼Xni

Neð Þi f

eð Þi ðD:7Þ

Appendix D 393

Page 23: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

in which fi(e) is the value of f at node i. Utilizing

the chain rule of differentiation:

∂f∂x

¼ ∂f∂ζ

� ∂ζ∂x

þ ∂f∂η

� ∂η∂x

þ ∂f∂ξ

� ∂ξ∂x

∂f∂y

¼ ∂f∂ζ

� ∂ζ∂y

þ ∂f∂η

� ∂η∂y

þ ∂f∂ξ

� ∂ξ∂y

∂f∂z

¼ ∂f∂ζ

� ∂ζ∂z

þ ∂f∂η

� ∂η∂z

þ ∂f∂ξ

� ∂ξ∂z

ðD:8Þ

where

∂f∂ζ

¼Xni

∂N eð Þi

∂ζ� f eð Þ

i ,∂f∂η

¼Xni

∂N eð Þi

∂η� f eð Þ

i ,∂f∂ξ

¼Xni

∂N eð Þi

∂ξ� f eð Þ

i ðD:9Þ

The terms in Eq. D.8 ∂ξ∂x ,

∂η∂x. . . are obtained,

again, forming Jacobian matrix similar to

Eq. 6.5:

Je ¼

Xni

∂N eð Þi

∂ζ� x eð Þ

i

Xni

∂N eð Þi

∂ζ� y eð Þ

i

Xni

∂N eð Þi

∂ζ� z eð Þ

i

Xni

∂N eð Þi

∂η� x eð Þ

i

Xni

∂N eð Þi

∂η� y eð Þ

i

Xni

∂N eð Þi

∂η� z eð Þ

i

Xni

∂N eð Þi

∂ξ� x eð Þ

i

Xni

∂N eð Þi

∂ζ� y eð Þ

i

Xni

∂N eð Þi

∂ξ� z eð Þ

i

266666666664

377777777775

ðD:10Þ

and inverting it:

Je½ ��1 ¼ 1

detJe

∂ζ∂x

∂η∂x

∂ξ∂x

∂ζ∂y

∂η∂y

∂ξ∂y

∂ζ∂z

∂η∂z

∂ξ∂z

266666664

377777775

ðD:11Þ

where detJe is the determinate of the Jacobian

matrix. Any function f(x, y, z) defined over the

elements can be integrated as:

ðððf x; y; zð Þdxdydz ¼

ð1

�1

ð1

�1

ð1

�1

f ζ; η; ξð ÞdetJedζdη dξ¼ð1

�1

ð1

�1

ð1

1

g ζ; η; ξð Þdζdη dξ ðD:12Þ

394 Appendix D

Page 24: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

By utilizing Gauss–Legendre rule similar to

two-dimensional case, Eq. 6.8:

ð1

�1

ð1

�1

ð1

�1

g ζ; η; ξð Þdζdη dξ ¼Xmk

Xmj

Xmi

WiWjWkg ζi; ηj; ξk� � ðD:13Þ

in which Wi, Wj, and Wk are the weight

coefficients and g ζi; ηj; ξk� �

is the value of the

function at the sampling point ζi; ηj; ξk� �

.

For linear elasticity, again Hook’s law

provides the constitutive relationship between

the stresses and strains within the element. Thus,

σ ¼ Dεσ ¼ σ11; σ22; σ33; τ12; τ23; τ13½ �Tε ¼ ε11; ε22; ε33; γ12; γ23; γ13½ �T

ðD:14Þ

in which σ11, σ22, σ33 and ε11, ε22, ε33 are the

normal stress and strain components, respec-

tively, and τ12, τ23, τ13 and γ12, γ23, γ13 are the

shear stresses and strains, respectively.

For isotropic linear elastic material the stress–

strain matrix, D, is:

D ¼ E 1� νð Þ1þ νð Þ 1� 2νð Þ

1� ν

1

1� ν0 0 0

1� ν0 0 0

1 0 0 0

1� 2νð Þ2 1� νð Þ 0 0

1� 2νð Þ2 1� νð Þ 0

sym1� 2νð Þ2 1� νð Þ

26666666666666666664

37777777777777777775

ðD:15Þ

in which E is the Young’s modulus and v is the

Poisson’s ratio. If the displacement vector in the

Cartesian coordinates, x-, y-, z-directions is

defined as δ ¼ u; v;w½ �T , then strain terms

appearing in Eq. D.14 are obtained from:

ε11 ¼ ∂u∂x

, ε11 ¼ ∂v∂y

, ε33 ¼ ∂w∂z

γ12 ¼∂u∂y

þ ∂v∂x

, γ23 ¼∂v∂z

þ ∂w∂y

, γ13 ¼∂w∂x

þ ∂u∂z

ðD:16Þ

Appendix D 395

Page 25: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

and they can be calculated at the element inte-

gration points as

ε ¼ Bδ eð Þ ¼Xni

Biδi ðD:17Þ

and the strain matrix B takes the form of:

Bi ¼

∂Ni

∂x0 0

0∂Ni

∂y0

0 0∂Ni

∂z∂Ni

∂y∂Ni

∂x0

0∂Ni

∂z∂Ni

∂y

∂Ni

∂z0

∂Ni

∂x

26666666666666666666664

37777777777777777777775

ðD:18Þ

Apart from representation of nodal

coordinates with a three-dimensional array,

the element connectivity list should also follow

the node numbering sequence in Fig. D.2 for

the three-dimensional elements in the input

files.

396 Appendix D

Page 26: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Index

AAdams–Bashforth method, 11

Adams–Moulton method, 11

Al–Cu alloy system, 339

Allen–Cahn equations, 1, 3, 41, 44, 110, 113, 117, 122,

218, 219, 222, 274, 279, 310

Anisotropy (in interfacial energy), 69–71

Applied force vector, 175

BBackward (implicit) Euler method, 11, 174

Basic Linear Algebra Subroutines (BLAS), 13

Bi-crystal

classical PFC model, 355

configuration, 356, 363

constant deformation rate, 362

deformation studies, 362

dislocations, 364

free energy, 361

free energy density, 363

kinetic evolution equation, 361

mechanical properties, 363

microstructure, 362, 363

MPFC, 361

objective, 361

pfc_2D_v2.m, 364

pfc_def_v2.m, 364, 366–368

plastic deformation, 361

precipitation behavior, 160

short-range interactions, 361

strain rate, 362

Brittle fracture, 303

Bulk diffusion, 51, 60, 63

Burger’s vector, 158

CCahn–Hilliard equation, 2, 26, 29, 102, 138,

156, 196, 197, 206, 211, 238, 239, 243, 248, 252

Cahn–Hilliard model, 21

Cahn–Hilliard phase-field equation, 104, 107, 144, 147

CALculation of PHAse Diagrams (CALPHAD), 121

Cancer metastasis, 82

Capacity matrix, 173

Cartesian coordinate system, 170, 174

Cartesian coordinates, 239

Cell motility, 81

Chain rule of differentiation, 170, 173, 174

Chemotaxis, 82

Collocation method, 10

Conductivity matrix, 173

Cottrell atmosphere, 156

Crank–Nicholson method, 11, 174

Cubic anisotropy, 140

Cubic Hermite elements, 197

DDeformation

bi-crystal (see Bi-crystal)morphology, 356

Dendritic-solidification, 2, 69–73, 77

Density functional theory (DFT), 338

Dislocations, 238

dipole, 159

lattice defects, 355

and motions, 361

plastic deformation, 361

polycrystal microstructure, 341

pre-melting at grain boundaries, 339

EEdge dislocation dipole, eigenstrain approach, 157

Eigenstrains, 238, 265, 273, 279

Cr precipitates, 157

dependency of, 138

dislocations, 166

elastic energy, 157

misfit strains, 140

nonzero, 157

position- and composition-dependent, 138

Elastic energy, 273

Elastic inhomogeneities and applied stresses, phase

separation

elastic anisotropy, 144

fft_raft_v1.m program, 144–147

fft_raft_v2.m program, 147–149

Fourier space, 140

green_tensor.m function, 149, 150

grid points with algorithm, 140

# Springer International Publishing Switzerland 2017

S.B. Biner, Programming Phase-Field Modeling, DOI 10.1007/978-3-319-41196-5397

Page 27: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Elastic inhomogeneities and applied stresses, phase

separation (cont.)hard particles, 141, 143

intrinsic stress–strain fields, 138

Kronecker delta function, 140

matrix and precipitation phases, 141

mechanical equilibrium, 138–140

nickel-based supper alloys, 138

objective, 137

phase-field model, 138

phase separation behavior, 140

solve_elasticity_v1.m function, 150–153

solve_elasticity_v2.m function, 153–155

Elasticity matrix, 174

Elastic-plastic behavior, 303, 336

Elastic-strain energy, 159

475 �C embrittlement, 156

Energy barrier, 197, 238, 274, 278, 306

Euler finite difference algorithm, 111

Euler method, 174

Euler time marching scheme, 104

Explicit Euler finite difference algorithm, 112, 114

External loading, 303, 310

FFe–Cu–Mn–Ni alloy

CALculation of PHAse Diagrams, 121

Cu precipitates, 124

Cu-rich phases, 121

Fe_Cu_Mn_Ni_free_energy.m function, 132–137

fft_FeCuNiMn_v1.m program, 125–128

fft_FeCuNiMn_v2.m program, 128–131

Init_FeCuNiMn_micro.m function, 131, 132

kinetic Monte Carlo algorithm, 121

Ni–Mn-rich intermetallic B2 rings, 121

non-conserved phase transformations, 124

objective, 121

phase-field model, 122–123

FEM discretization, 172–173

Finite difference algorithms

backward difference, 17

centered difference, 17

centered second difference, 17

description, 17

disadvantages, 17

five-point stencil, 18

forward difference, 17

one-dimensional transient heat conduction, 19

source codes, 19–21

Finite difference method, 10, 17, 22

Finite element analysis (FEA), 169

Finite element method (FEM), 10, 169, 196, 218

First-order phase transformations, 197, 273

Five-point stencil, 18, 34

Force vector

due to body forces, 175

due to initial internal strains, 175

due to initial internal stresses, 175

Forward (explicit) Euler method, 11, 174

Fourier-spectral method, 340, 343, 346, 348,

351, 355, 364

binary alloy with semi-implicit

Cahn–Hilliard equation, 102, 103

explicit Euler time marching scheme, 104

fft_ch_v1.m program, 104–107

fft_ch_v2.m program, 107–109

numerical implementation, 103

objective, 102

Ostwald ripening process, 103

phase-field model, 102–103

prepare_fft.m function, 109, 110

grain growth with semi-implicit

evolution kinetics with identical simulation

parameters, 112

fft_ca_v1.m program, 113–117

fft_ca_v2.m program, 117–120

free_energ_fft_ca_v1.m function, 120

free_energ_fft_ca_v2.m function, 120, 121

non-conserved Allen–Cahn equation, 110

numerical implementation, 111

objective, 110

phase-field model, 110–111

simulations, 111

one-dimensional transient heat conduction

coarse spatial and temporal discretization, 101

constant thermal conductivity, density and heat

capacity, 99

forward Euler time marching, 100

forward Fourier transform, 99

Fourier space, 99

heat_1d_fft.m program, 100–102

Fracture, 303, 308, 310

Free-energy, 2–5, 70

Free-energy density, 363

FreeMat, 13

Front-tracking method, 36

GGalerkin method, 10

Gauss–Legendre rule, 171, 199

Gibbs energy, 123

Ginzburg–Landau equation, 274

Ginzburg–Landau model, 337

Ginzburg–Landau type, 70

Global stiffness matrix, 220, 240

Gnuplot, 15

Grain boundary

diffusion, 60, 63

dislocations, 356

migration, 51

PFC model, 361

spinodal decomposition, 339

Grain growth, 35–37, 40, 51, 82, 83, 218, 220–222, 237

bicrystal configuration, 356

density field, 355 (see also Fourier-spectral method,

grain growth with semi-implicit)

MD, 355

mechanical and physical properties, 355

398 Index

Page 28: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

mutual annihilations in shrinking process, 356

objective, 355

PFC, 355

pfc_2D_v1.m and pfc_2D_v2.m, 356

pfc_poly_v1.m, 355, 356, 358–361

phase-field crystal model, 355

source codes, 356–361

Green’s tensor, 140, 144, 146, 147, 149–151, 153, 161,

163, 164, 166

Green’s theorem, 172

HHeat balance, 171

heat_1d_fft.m program, 100

Hook’s law, 174

IImplicit-Euler time integration, 239

Isoparametric representation, 169, 171

Isothermal phase transformation, 125

JJacobian matrix, 170, 171, 173, 174

KKronecker delta function, 140, 158, 238

LLandau polynomial, 274

Langevin noise, 5

Linear Algebra Package (LAPACK), 13

Linear elasticity, 176

MMartensite, 273

Martensitic transformations, 272, 273, 298, 303

Material-specific properties, 369

Matlab/Octave implementation, 169

Matlab/Octave optimized mode, 243

Matlab programming

features, 13

introduction, 13

linear algebra computations, 13

modular approach, 14

syntax, 14

Metastable body-centered cubic (bcc) phase, 121Method of weighted residual, 9

Microstructures, 1, 3–5

deformation simulation, 364

triangular and stripe phases, 342

Misfit strains, 140, 141, 144, 157, 158

Molecular dynamics (MD)

classical, 355

simulations, 361

Monte Carlo/Potts model, 36, 82

Multi-cellular systems, 81

Multi-component phase-field model, 110, 121

NNano-crystalline materials, 355

Newton–Raphson algorithm, 198, 204, 206, 219

Newton–Raphson equation, 240

Newton–Raphson scheme, 276, 307

Newton–Raphson solution algorithm, 211

Nondimensional parameters, 142

Nucleation, 5

Numerical algorithm, 369

Numerical integration of isoparametric elements,

169–171

OOctave programming, 13, 14

Ostwald ripening process, 23, 103, 199

PParaview, 15

Partial differential equation (PDE)

equation, 9

spatial discretization, 9

Penalty term, 306

Phase separation, 21, 23, 24, 273, 274. See alsoElastic inhomogeneities and applied stresses

microstructure, 104

semi-implicit spectral and explicit Euler finite

difference, 105

Phase-field crystal model (PFC)

adoptive meshing, 340

application, 339

atomistic events, 337

body-centered cubic, 341

classical, 340

codes pfc_2D_v1.m and pfc_2D_v2.m, 356constant (liquid) phase, 338

deformation behavior of bicrystal, 361–363

deformation simulation, 362

elastic strain energy, 338

face-centered cubic, 338

Fourier spectral method, 340

free energy, 337, 338

free energy functional, 340

Ginzburg–Landau theory, 337

grain growth, 355, 356

mutual annihilations in shrinking process, 356

numerical implementation, 340

objective, 339

order parameter, 337

parabolic equation, 340

pfc_2D_v2.m, 346–348

pfc_3D_v1.m, 348–351

pfc_3D_v2.m, 351–353

pfc_def_v2.m, 364–368

pfc_poly_v1.m, 356, 358–361

prepare_fft_3d.m, 353

real Al–Cu alloy system, 339

simulations, 341

Index 399

Page 29: 0002835182 371..379978-3-319-41196-5/1.pdf371. Fig. A.1 A typical Voronoi tessellation results for the points with their all nine replicas. The file name that contains this graphical

Phase-field crystal model (PFC) (cont.)source code pfc_2D_v1.m, 341, 343–345write_vtk_grid_values_3D.m, 354

Phase-field fracture model, 303

Phase-field method

Allen–Cahn dynamics, 3

dendritic solidification, 2

free energy, 2

Ginzburg–Landau equation, 1

Langevin noise, 5

microstructure, 1

solid–liquid transformations, 3

Steinbach’s models, 4

Tiaden’s model, 3, 4

Phase-field models, 22, 82–83, 124, 197, 219, 237, 238,

273–274, 303–305, 369

Plane-strain, 175, 176, 308

Plane-stress, 174, 183

Polycrystal

microstructure, 341

phase-field crystal model, 355

Polycrystalline microstructure, 113

Principles of virtual work, 174–176

RRadau rule, 171

Read this book on SpringerLink, 15

Readers, 369

Runge–Kutta methods, 11

SScilab, 13

Semi-implicit Fourier spectral method, 112, 114

Shape functions, 169, 170, 172–174, 179, 182, 183, 197,

198, 205, 216, 219, 220, 239, 275, 283, 305

Sharp-interface approach, 1

Simulation-specific properties, 369

Sintering (solid-state), 51–54, 57, 61, 83

Solute drag, 339

Source codes, 176–196

Spectral accuracy, 99

Spectral method, 10

Spherical bicrystal configuration, 356

Spherical grain, time evolution, 112

Spinodal decomposition, 21, 338, 339

Fe–Cr alloy

Burger’s vector, 157

Cottrell atmosphere, 156

dislo_strain.m function, 166, 167

elastic inhomogeneity, 157

engineering materials, 156

FeCr_chem_potent_v1.m function, 167

FeCr_chem_potent_v2.m function, 167, 168

Fe-rich α and Cr-rich α0 phases, 156fft_FeCr_v1.m program, 161–163

ft_FeCr_v2.m program, 164–166

initial concentration field, 160

lattice defects, 156

microstructure, 159

misfit strains, Cr phase, 158

nonzero eigenstrain terms, 157

objective, 156

phase-field model, 156, 157

precipitation behavior, 160

simulations, 159

FEM implementation, 197

numerical implementation, 197–199

objectives, 196

phase-field model, 197

results, 199

Steinbach’s models, 4

Stiffness matrix, 175

Stress-relief mechanism, 238

Stress–strain fields, 239

Strong and weak forms, FEM formulation, 169,

171–174

Surface diffusion, 51, 53, 60, 63

Surface evolver, 36

Surface heat transfer matrix, 173

Surface integral, 172

Syntax of Matlab/Octave, 369

TTau method, 10

Test/weight function, 9

Thermo-Calc, 121

Thin-films, 238, 242, 271

Tiaden’s model, 3, 4

Time evolution, 23

Transient heat conduction, 17, 19, 99, 171

Transient heat transfer, 173–174

Trial function, 9, 10

VVertex dynamics, 36, 82

WWeak form formulation, 172–173, 197, 239, 275, 305

400 Index