Hi, John. I'm not completely sure if this is related, but I do want to make sure it's not something like that discussed in the recent thread about the heat equation on this list:
http://thread.gmane.org/gmane.comp.python.fipy/3556/focus=3565 Is your "diffusion coefficient" (typically called alpha, thermal diffusivity, in heat transfer) a function of position? If so, it's important to keep only the thermal conductivity, k, as the coefficient for DiffusionTerm (more detail in the linked thread). The density and heat capacity should be coefficients for the TransientTerm. Cheers, Ray On Tue, Sep 9, 2014 at 10:00 AM, John Assael <[email protected]> wrote: > Hi, > I keep getting inaccurate results on my heat conduction experiment, 0.1 > missing accuracy except if the shape is extremely and abnormally dense. > In the beginning I though its the time steps but they are already very > small and make no difference if I shorten the intervals. > > I am trying to replicate a simulation from COMSOL and if I take the mesh > and the timesteps I cannot replicate the results accurately. > > I believe the problem is that all my variables are cell variables. > However, I read in the FAQ that diffusion terms have to be FaceVariables. > > More specifically, my mesh is 2-D and I have the following equation and > variables: > > * dT = CellVariable(name=r'$\Delta T$', mesh=mesh, value=0.)* > * Q = CellVariable(name=r'$Q$', mesh=mesh, value=0.)* > * T = CellVariable (name=r'$T$', mesh=mesh, value=0.)* > * D = CellVariable (name=r'$D$', mesh=mesh, value=0.)* > > * heat = (TransientTerm(coeff=D) == DiffusionTerm(coeff=T) + Q)* > > And then I go to the areas I have defined and set the values. Here is an > example of two of them. > > > * x, y = mesh.cellCenters meshW = (x ** 2 + y ** 2 <= > properties['r'] ** 2)* > * Q.setValue(properties['Q'], where= meshW)* > * T.setValue(properties['T'], where= meshW)* > * D.setValue(properties['D'], where= meshW)* > > * meshW1 = (x ** 2 + y ** 2 > properties['r'] ** 2)* > * T.setValue(properties['T1'], where= **meshW1**)* > * D.setValue(properties['D2'], where= **meshW1**)* > > However, when I do that I get an error for the face variable for every > single one I try to change. > Would sweeps instead of solve help me solve the problem? > Do you have any suggestions? > > Thank you very much! > > Best regards, > John > > > -- > ..:: ic3man.gr ::.. > software | design | development > _/_/_/ email : [email protected] > _/_/_/ www : http://www.ic3man.gr > ------------------------------------------------------------------ > This e-mail and any attachments are confidential. You may not copy > or disseminate any information contained in them to anyone other > than the intended recipient. If you are not the intended recipient > please contact the sender by reply e-mail and destroy all copies > of the original message immediately. > ------------------------------------------------------------------ > > _______________________________________________ > 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 ]
