作者callmei (挨)
看板Fortran
标题Re: [请益] 暂态移动热源
时间Sun Apr 15 16:52:37 2012
※ 引述《adiadiadi (笑一笑没什麽)》之铭言:
: 各位好
: 最近在写一个暂态二维的热扩散方程式
: 小弟才疏学浅,在移动热源的地方一直卡住
: 这热源由雷射加热(加热宽度s)
: 每隔时间 tou 会在下一个间隔landa的位置加热一次
^^^^^^^^^^^^^^^^^^^^^
这句话的意思是指,第二个tau加热源位置与第一个tau加热源位置相差lambda ??
换句话说,加热源宽度为s的话
time < tau,加热源位置是x=0~s
tau < time < 2*tau ,加热源位置是x=s+lambda~s+lambda+s
2*tau < time < 3*tau ,加热源位置是x=s+lambda+s+lambda~s+lambda+s+lambda+s
依此类推...
你的意思是这样吗?
如果只是要应付作业,我想应该都是用等大小的结构性网格
那麽最简单的做法,修改一下上篇版友的CODE就好:
若dx是x方向上的网格大小
m1及m2分别是s与lambda占据的网格数量,即m1=INT(s/dx), m2=INT(lambda/dx) ,
而dt是time step的话,令m3为tau占据的dt数量,即m3=INT(tau/dt) ,
m1、m2、m3皆为整数资料型态
(我想应该很少人会设计dx无法整除s与lambda 和 dt无法整除tau吧@@)
DO t=1,Nstep
q_dot=0
N=t/m3 !注意t跟m3都是整数资料型态
q_dot( N*(m1+m2)+1 : N*(m1+m2)+m1 )=const
.
.
後面续接PDE SOLVER
.
.
ENDDO
如果我没理解错的话,应该这样就可以了,当然其实是还有一些改良空间的
既然刚学FORTRAN,那要注意m1=s/dx、m2=lambda/dx、m3=tau/dt 这3个式子
因为这是浮点数运算完後 要转换成整数型态,
FORTRAN是用无条件舍去,小心浮点数运算造成的误差
以上
其实这跟FORTRAN真的是没什麽关系....
但是数值方法跟科学计算好像PTT上也没特定的讨论版@@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.218.94
1F:推 adiadiadi:谢谢!我现在尝试heviside或是dirac delta函数的方法try 04/16 09:11
2F:→ adiadiadi:谢谢! 04/16 09:11