steps = 100 timeStepDuration = 0.02 L = 1.5 nx = 100 temperature = 1. phaseTransientCoeff = 0.1 epsilon = 0.008 s = 0.01 alpha = 0.015 temperature = 1. dx = L / nx from fipy.meshes.grid1D import Grid1D mesh = Grid1D(dx=dx, nx=nx) from fipy.variables.cellVariable import CellVariable phase = CellVariable(name='PhaseField', mesh=mesh, value=1.) from fipy.variables.modularVariable import ModularVariable theta = ModularVariable(name='Theta', mesh=mesh, value=1.) theta.setValue(0., where=mesh.getCellCenters()[..., 0] > L / 2.) from fipy.terms.implicitSourceTerm import ImplicitSourceTerm mPhiVar = phase - 0.5 + temperature * phase * (1 - phase) thetaMag = theta.getOld().getGrad().getMag() implicitSource = mPhiVar * (phase - (mPhiVar < 0))
#Laplacian=0 nx = 50 dx = 1. from fipy.meshes.grid1D import Grid1D mesh = Grid1D(nx=nx, dx=dx) from fipy.variables.cellVariable import CellVariable phi = CellVariable(name="solution variable", mesh=mesh, value=0) z = CellVariable(name="dummy", mesh=mesh, value=0) valueLeft = 1 valueRight = 0 from fipy.boundaryConditions.fixedValue import FixedValue BCs = (FixedValue(faces=mesh.getFacesRight(), value=valueRight), FixedValue(faces=mesh.getFacesLeft(), value=valueLeft)) from fipy.terms.explicitDiffusionTerm import ExplicitDiffusionTerm eqX = ExplicitDiffusionTerm(coeff=1) from fipy import viewers viewer = viewers.make(vars=(phi), limits={'datamin': 0., 'datamax': 1.}) viewer.plot() eqX.solve(var=phi, boundaryConditions=BCs) viewer.plot()