usnistgov / fipy

FiPy is a Finite Volume PDE solver written in Python
http://pages.nist.gov/fipy/en/latest
Other
505 stars 148 forks source link

How to implemenent Interface Resistance between metal non-metal layer #1005

Closed Sandip433 closed 7 months ago

Sandip433 commented 8 months ago

Hi, I want to simulate effect of heat transfer across Metal-Nonmetal Interface on femtosecond Laser. Here are the equations I want to solve Interface Resistance.pdf Here is the code I wrote

from fipy import *

Lx=2.0e-7 
dx=1.0e-10
nx=int(Lx/dx) 
T=100e-12
dt=4e-15
I_0 = 1100 
R = 0.982
delta = 12.23e-9
t_p = 100e-15
m=Grid1D(nx=nx, dx=dx)
x = m.cellCenters[0]
time = Variable(0.)
gold = (x <= Lx / 4.0)
chromium = (x >= Lx / 4.0 ) & ( x<= Lx/2.0)
metal = (x<= Lx/2.0)
nonmetal = (x>= Lx/2.0)
S = numerix.sqrt(4*numerix.log(2)/numerix.pi)*((1-R)*I_0/(t_p*delta))*numerix.exp(-(x/delta)-4*numerix.log(2)*((time-2*t_p)/t_p)**2)
T_e=CellVariable(name="Electron Temperature", mesh=m, value=300.0, hasOld=True )
T_p=CellVariable(name="Phonon Temperature", mesh=m, value=300.0, hasOld=True )
T_s=CellVariable(name="Non-metal Temperature", mesh=m, value=300.0, hasOld=True )
C_e = (68 * gold + 194 * chromium + 0 * nonmetal) * T_e
C_p = (2.5e6 * gold + 3.3e6 * chromium + 0 * nonmetal)
C_s = (0 * gold + 0 * chromium + 2e6 * nonmetal)
G_g = 0.21e17*((1.18e7/1.25e11)*(T_e+T_p)+1)
G_c = 4.2e17*((7.9e7/13.4e11)*(T_e+T_p)+1)
K_eg = 318*(1.25e11*T_e/(1.18e7*T_e**2+1.25e11*T_p))
K_ec = 95*(13.4e11*T_e/(7.9e7*T_e**2+13.4e11*T_p))
K_e = K_eg * gold + K_ec * chromium + 0 * nonmetal
K_s = (0 * gold + 0 * chromium + 10 * nonmetal)
G = G_g * gold + G_c * chromium + 0 * nonmetal
M=1e10 # taking R_es=R_ps=1e10
eq_e=TransientTerm ( coeff= C_e , var=T_e) == DiffusionTerm (coeff=K_e, var=T_e) - ImplicitSourceTerm (coeff=G, var=T_e) + ImplicitSourceTerm (coeff=G, var=T_p) + S * gold
eq_p=TransientTerm ( coeff= C_p , var=T_p) == DiffusionTerm (coeff=(0.01 * K_e ) , var=T_p) + ImplicitSourceTerm (coeff=G, var=T_e) - ImplicitSourceTerm (coeff=G, var=T_p)
eq_s=TransientTerm ( coeff= C_s , var=T_s) == DiffusionTerm (coeff=K_s, var=T_s) + ImplicitSourceTerm (coeff=  M * nonmetal, var=T_e) - ImplicitSourceTerm (coeff= M * nonmetal, var=T_s) + ImplicitSourceTerm (coeff= M * nonmetal, var=T_p) - ImplicitSourceTerm (coeff=M * nonmetal, var=T_s) 
eq=eq_e & eq_p & eq_s
solver = LinearPCGSolver(precon=None, tolerance=1e-10, iterations=2000)
while time()<T:  
    T_e.updateOld()
    T_p.updateOld()
    T_s.updateOld()
    for i in range(10):
        res=eq.sweep(dt=dt, solver=solver)
    time.setValue(time() + dt)

The problem is when I solve those equations for 100 ps the temperature of non-metal substrate does not change. What should I do ?