160 likes | 285 Views
Numerical methods for solidification. Kees Verhoeven. http://www.win.tue.nl/~keesverh/presentations/presnumlab.pdf. Project ‘Laser percussion drilling’ see http://www.win.tue.nl/~keesverh/ can be divided in. Melting Splashing
E N D
Numerical methods for solidification Kees Verhoeven http://www.win.tue.nl/~keesverh/presentations/presnumlab.pdf
Project ‘Laser percussion drilling’see http://www.win.tue.nl/~keesverh/can be divided in • Melting • Splashing • Solidificationsee http://www.win.tue.nl/~keesverh/presentations/presaday.ppt
Solidification • Unknowns: • Equations: • Conservation of mass • Burgers’ equation • Heat equation
Numerics of solidification model(Software to be found in NumLab oml-toolbox version 2.12) FEM Sepran (Fortran) SLM Burgers C++ SLM Mass C++ Software for boxed part is shown on next slide, green arrows indicate usage of splines
SLM-part: verhoeven library • Consists of: • MInit : initialization of u and h • MUpdateU : SLM for Burgers equation • MUpdateH : SLM for mass equation • These two specific implementations are typical for my • research, but can be changed easily. • MDFxLimiter : defines the slope limiter function used in a SLM • MIteration : comprised of MDFxLimiter (2x), MUpdateU and MUpdateH
SLM-part: verhoeven library Part of verhoeven-3d.sav.C, use of Mloop can be seen in network.
Side step: generate MPEG using VTK-library Part of verhoeven-3d-with-mpeg.sav.C
Numerics of solidification model FEM Sepran (Fortran) SLM Burgers C++ SLM Mass C++ Green arrows indicate usage of splines
Splines • pppack (piecewise polynomial package)from www.netlib.org (* = d/s) • Above indicated part of pppack can be found in library pppackoperators • This code is made available through wrapping Fortran source code, like in the oml-toolbox *cubspl.f to determine splines *ppvalu.f to evaluate spline *interv.f needed for *ppvalu
pppackoperators/sources For every *.f a .h-file is made in the following way. dcubspl.f: subroutine dcubspl(tau, c, n, ibcbeg, ibcend) … dcubspl.h: void F77NAME(dcubspl)(const double *tau, double *c, const int *n, const int *ibcbeg, const int *ibcend);
pppackoperators/classes/NDSpline.cc • constructor • NDSpline([xi],[C],ibcbeg,ibcend); • uses definition of dcubspl.h: • void F77NAME(dcubspl)(_tau->getValue(), • c->getValue(), &n, &ibcbeg, &ibcend); • operator() uses definition of dppvalu.h: • void F77NAME(dppvalu)(tau.getValue(), • c.getValue(), &l, &k, &x, &_j);
pppackoperators/modules/MDSpline.cc • constructor now uses more user friendly input args: • MDSpline(z,x,[xi],[fxi],ibcbeg,begval, • ibcend,endval); • derives right C and calls NDSpline callback: • spline->callback(xi,left_derivative, • right_derivative);
pppackoperators/modules/MDSpline.mh Generates: x [xi] [fxi] ibcbeg begval ibcend endval z
Network showing usage of sampling Note that evaluation points are fed to MDSpline from below. (Seespline-with-vis.sav.C)