http://www.ctcms.nist.gov/fipy/examples/cahnHilliard/generated/examples.cahnHilliard.mesh2DCoupled.html
On Dec 15, 2014, at 2:59 AM, Ronghai Wu <[email protected]> wrote: > Indeed, if I cancel the kine_c or if only have kine_c, it works. > However, the coupled case just does not work. Could you please explain > how to split kine_c into a pair of 2nd-order equations? I do not get it. > Thank you. > > On 12/12/14 19:52, Guyer, Jonathan E. Dr. wrote: >> I don't know for sure, but I see that you have a 4th-order diffusion term in >> kine_c. >> >> Nth-order diffusion and coupled don't play nicely together. Probably, >> Nth-order diffusion terms should just go away, now that we support coupled >> equations. >> >> If you split kine_c into a pair of 2nd-order equations, that may resolve >> this issue. >> >> >> On Dec 12, 2014, at 11:10 AM, Ronghai Wu <[email protected]> wrote: >> >>> Hi Fipy developers and users, >>> >>> I have the following coupled equations: >>> >>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------- >>> kine_eta1 = >>> fp.TransientTerm(var=eta1, coeff=1.) == fp.DiffusionTerm(var=eta1, >>> coeff=1.) \ >>> >>> + fp.ImplicitSourceTerm(var=eta1, >>> coeff=(eta1**2 + 5.*(10.-c))) \ >>> >>> - 5.*eta2*eta3 >>> kine_eta2 = fp.TransientTerm(var=eta2, >>> coeff=1.) == fp.DiffusionTerm(var=eta2, coeff=1.) \ >>> >>> + fp.ImplicitSourceTerm(var=eta2, >>> coeff=(eta2**2 + 5.*(10.-c))) \ >>> >>> - 5.*eta1*eta3 >>> kine_eta3 = fp.TransientTerm(var=eta3, >>> coeff=1.) == fp.DiffusionTerm(var=eta3, coeff=1.) \ >>> >>> + fp.ImplicitSourceTerm(var=eta3, >>> coeff=(eta3**2 + 5.*(10.-c))) \ >>> >>> - 5.*eta1*eta2 >>> kine_c = fp.TransientTerm(var=c, coeff=1.) == >>> fp.DiffusionTerm( var=c, coeff=( 1., 1. ) ) \ >>> >>> + fp.DiffusionTerm( var=c, coeff=8. ) >>> eq = kine_eta1 & kine_eta2 & kine_eta3 >>> & kine_c >>> >>> eq.sweep(dt=1.e-2) >>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------- >>> >>> When I run it, I get the error massage which I do not understand. I am >>> wondering what this error implies exactly and how to fix it? >>> >>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------- >>>>>> eq.sweep(dt=1.e-2) >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/term.py", line 236, in >>> sweep >>> solver = self._prepareLinearSystem(var=var, solver=solver, >>> boundaryConditions=boundaryConditions, dt=dt) >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/term.py", line 170, in >>> _prepareLinearSystem >>> buildExplicitIfOther=self._buildExplcitIfOther) >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/coupledBinaryTerm.py", >>> line 122, in _buildAndAddMatrices >>> buildExplicitIfOther=buildExplicitIfOther) >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/binaryTerm.py", line >>> 68, in _buildAndAddMatrices >>> buildExplicitIfOther=buildExplicitIfOther) >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/binaryTerm.py", line >>> 68, in _buildAndAddMatrices >>> buildExplicitIfOther=buildExplicitIfOther) >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/binaryTerm.py", line >>> 68, in _buildAndAddMatrices >>> buildExplicitIfOther=buildExplicitIfOther) >>> File "/usr/lib/python2.7/dist-packages/fipy/terms/unaryTerm.py", line 99, >>> in _buildAndAddMatrices >>> diffusionGeomCoeff=diffusionGeomCoeff) >>> File >>> "/usr/lib/python2.7/dist-packages/fipy/terms/abstractDiffusionTerm.py", >>> line 318, in _buildMatrix >>> var, L, b = self.__higherOrderbuildMatrix(var, SparseMatrix, >>> boundaryConditions=boundaryConditions, dt=dt, >>> transientGeomCoeff=transientGeomCoeff, >>> diffusionGeomCoeff=diffusionGeomCoeff) >>> File >>> "/usr/lib/python2.7/dist-packages/fipy/terms/abstractDiffusionTerm.py", >>> line 407, in __higherOrderbuildMatrix >>> b = L * lowerOrderb + b >>> File "/usr/lib/python2.7/dist-packages/fipy/matrices/pysparseMatrix.py", >>> line 327, in __mul__ >>> return _PysparseMatrixFromShape.__mul__(self, other) >>> File "/usr/lib/python2.7/dist-packages/fipy/matrices/pysparseMatrix.py", >>> line 169, in __mul__ >>> raise TypeError >>> TypeError >>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ >>> >>> Thanks >>> Ronghai >>> _______________________________________________ >>> fipy mailing list >>> [email protected] >>> http://www.ctcms.nist.gov/fipy >>> [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] >> >> _______________________________________________ >> fipy mailing list >> [email protected] >> http://www.ctcms.nist.gov/fipy >> [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] > > -- > ------------------------------------------ > Ronghai Wu > > Institute of Materials Simulation (WW8) > Department of Materials Science and Engineering > University of Erlangen-Nürnberg > Dr.-Mack-Str. 77, 90762 Fürth, Germany > > Tel. +49 (0)911 65078-65064 > > _______________________________________________ > fipy mailing list > [email protected] > http://www.ctcms.nist.gov/fipy > [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] _______________________________________________ fipy mailing list [email protected] http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
