%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% PHASE-FIELD FINITE-DIFFIRENCE CODE FOR SOLVING %
% CAHN-HILLIARD EQUATION %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%== get intial wall time:
time0=clock();
format long;
out2 = fopen('time_energ.out','w')
%-- Simulation cell parameters:
Nx = 64;
Ny = 64;
NxNy= Nx*Ny;
dx = 1.0;
dy = 1.0;
%--- Time integration parameters:
nstep = 10000;
nprint= 50;
dtime = 1.0e-2;
ttime = 0.0;
%--- Material specific Parameters:
c0 = 0.40;
mobility = 1.0;
grad_coef= 0.5;
%
%---prepare microstructure:
%
iflag =1;
[con] = micro_ch_pre(Nx,Ny,c0,iflag);
%
%--- Evolve
%
for istep =1:nstep
ttime = ttime +dtime;
for i=1:Nx
for j=1:Ny
jp=j+1;
jm=j-1;
ip=i+1;
im=i-1;
jp=j+1;
jm=j-1;
ip=i+1;
im=i-1;
if(im == 0)
im=Nx;
end
if(ip == (Nx+1))
ip=1;
end
if(jm == 0)
jm = Ny;
end
if(jp == (Ny+1))
jp=1;
end
hne=con(ip,j);
hnw=con(im,j);
hns=con(i,jm);
hnn=con(i,jp);
hnc=con(i,j);
lap_con(i,j) =(hnw + hne + hns + hnn -4.0*hnc)/(dx*dy);
%--- derivative of free energy:
[dfdcon]=free_energ_ch_v1(i,j,con);
dummy(i,j) = dfdcon - grad_coef*lap_con(i,j);
end %for j
end %for i
%--
for i=1:Nx
for j=1:Ny
jp=j+1;
jm=j-1;
ip=i+1;
im=i-1;
jp=j+1;
jm=j-1;
ip=i+1;
im=i-1;
if(im == 0)
im=Nx;
end
if(ip == (Nx+1))
ip=1;
end
if(jm == 0)
jm = Ny;
end
if(jp == (Ny+1))
jp=1;
end
hne=dummy(ip,j);
hnw=dummy(im,j);
hns=dummy(i,jm);
hnn=dummy(i,jp);
hnc=dummy(i,j);
lap_dummy(i,j) = (hnw + hne + hns + hnn -4.0*hnc)/(dx*dy);
%-- time integration:
con(i,j) = con(i,j) + dtime*mobility*lap_dummy(i,j);
%-- for small deviations:
if(con(i,j) >= 0.9999);
con(i,j)= 0.9999;
end
if(con(i,j) < 0.00001);
con(i,j) = 0.00001;
end
end %j
end %i
%---- print results
if((mod(istep,nprint) == 0) || (istep == 1) )
fprintf('done step: %5d\n',istep);
%fname1 =sprintf('time_%d.out',istep);
%out1 = fopen(fname1,'w');
%for i=1:Nx
%for j=1:Ny
%fprintf(out1,'%5d %5d %14.6e\n',i,j,con(i,j));
%end
%end
%fclose(out1);
%--- write vtk file:
%-- calculate total energy
[energ] = calculate_energ(Nx,Ny,con,grad_coef);
fprintf(out2,'%14.6e %14.6e\n',ttime,energ);
write_vtk_grid_values(Nx,Ny,dx,dy,istep,con);
end %if
end %istep
%--- calculate compute time:
compute_time = etime(clock(),time0);
fprintf('Compute Time: %10d\n',compute_time);
case_study_1.zip_phase field_phase field model_phase-field_zip
版权申诉
5星 · 超过95%的资源 9 浏览量
2022-09-24
10:50:55
上传
评论
收藏 1.35MB ZIP 举报
周楷雯
- 粉丝: 78
- 资源: 1万+
最新资源
- yolov5,SSD 可能使用到的一些代码
- 介绍离散性制造行业的MES系统流程
- 基于IDEA-CCNL/Randeng-Pegasus-238M-Summary-Chines微调的中文文本摘要任务源码+数据集
- 微信小程序源码 车源宝 二手车交易平台 源码下载
- 微信小程序源码 实现 城市切换 demo 根据城市首字母排序城市 选择城市 源码下载
- 2024新版计算机编译原理期末速成全套视频教程(视频+配套资料)
- VMware7.0虚拟机硬盘无法编辑,无法连接到Profile-Driven Storage Service
- arm64内核的mongo镜像
- 基于stm32f103c单片机+MPU6050+0.96英寸OLED显示屏双柄遥控器硬件(原理图+PCB)工程文件.zip
- 整理的关于少儿编程的学习路径,以及如何在小升初,初升高和大学充分的利用起来编程经验的优势
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论1