Closed mphoward closed 4 years ago
Thanks! The variable z is actually only used in the documentation to define the harmonic potential (not in the API), since the position of the drying front is set by interface
. So, z could be replaced by another dummy variable without breaking compatibility. But, I think I will leave it for now and reconsider cleaning up whenever I actually get around to #1 and go through all of the docs.
This PR implements the moving harmonic potential that mimics evaporation in a spherical geometry, as in Liu et al. Since the original command for the thin film evaporator was
evaporate.implicit
and the class structures are highly similar, I decided to add ageometry
option to this command that can be either'film'
(default, original behavior) or'droplet'
(new geometry). This supports extension to other geometries like cylinders. On the C++ side, there is now a baseImplicitEvaporator
, from which the geometries and GPU versions derive. Technically, this is probably better achieved using templates to compute the distance and normal to the interface rather than subclassing, but this was faster to implement. The code can be refactored later if we want without changing the public API.