| 查看: 176 | 回复: 0 | |||
[求助]
请教一个用门特卡罗计算合金二维面上原子排列随机度的问题
|
|
有大概的框架 可是6个地方的代码不太会写 function [ config ] = alloy( nBox, fAlloy, nSweeps, T, Eam ) %ALLOY Performs Metropolis Monte Carlo of a lattice gas model of an alloy % A random alloy is represented as a 2 dimensional lattice gas in which % alloying atoms can exchange position with matrix atoms using the % Metropolis alogorithm. The purpose is to show how alloys become more % random as the temperature increases. % % Input arguments % nBox The size of the 2-D grid % fAlloy The fraction of sites occupied by alloying atoms % nSweeps The number of Monte Carlo moves % T The temperature (K) % Eam Alloy-matrix interaction energy (eV) % % Output arguments % config The final configuration % % Set interactions between like atoms to zero % Eaa Alloy-alloy interaction energy (eV) % Emm Matrix-matrix interaction energy (eV) % Emm = 0.0; Eaa = 0.0; % % Compute kT in eV % kB = 8.617332e-5; kT = kB*T; % % Initialize the configuartion % 1 Matrix atoms % 2 Alloy atoms % %%% PUT CODE HERE % % Set up energy matrix % Ematrix(1,1) = Emm; Ematrix(1,2) = Eam; Ematrix(2,1) = Eam; Ematrix(2,2) = Eaa; % % Carry out the random swaps % %%% PUT CODE HERE % % Plot the configuration. Put extra zeros around border so pcolor works % properly. % config_plot = zeros(nBox+1); config_plot(1:nBox, 1:nBox) = config; pcolor(config_plot); end function [ixb iyb dE] = swapInfo(ixa, iya, dab, nBox, config, Ematrix) %SWAPINFO Returns the position of the neighbour and the energy change % following a swap % % Input arguments % ixa X coordinate of first atom % iya Y coordinate of first atom % dab Direction of second atom relative to first. There are four % possible directions, so this takes values between 1 and % 4. Together with ixa and ixb, this allows the position % of the second atom to be computed. This calculation is % done by getNeighbour % config The configuration of alloy atoms % nBox System size % Ematrix The 2x2 matrix of bond energies % Output arguments % ixb X coordinate of second atom % iyb Y coordinate of second atom % dE Energy change following swap % % Find neighbour atom % %%% PUT CODE HERE % % Find energy change % %%% PUT CODE HERE % function [ix2 iy2] = getNeighbour (ix1, iy1, d12) %GETNEIGHBOUR returns the position of a neighbouring atom % % Input arguments % ix1 X coordinate of first atom % iy1 Y coordinate of first atom % d12 Direction of second atom relative to first % Output arguments % ix2 X coordinate of second atom % iy2 Y coordinate of second atom % % Find new x coordinate % %%% PUT CODE HERE % % Find new y coordinate % %%% PUT CODE HERE end end |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有9人回复
最失望的一年
已经有17人回复
为什么nbs上溴 没有产物点出现呢
已经有6人回复
求推荐博导
已经有4人回复
存款400万可以在学校里躺平吗
已经有34人回复
求助一下有机合成大神
已经有4人回复
求推荐英文EI期刊
已经有5人回复
26申博
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
疑惑?
已经有5人回复













回复此楼