Performance of the computations

Why shall I use the interpolation routine?

The routine can be used to transfer results from one mesh to another. This is very helpful in conjunction with fluid flow computations. You should start the computation on a rather coarse mesh. After you have received a certain level of accuracy, you should stop the computation and interpolate the results on the finer mesh. Usually, with this strategy you will obtain a converged computation much faster than by starting from the fine mesh. Please take care, that the view factors still have to be computed for the destination mesh. Don't forget that the interpolation on the finer mesh is not sufficient to reduce the numerical error! Some iterations on the finer mesh are needed in any case.

How can I document my simulations?

The best way is to use the File Info dialogue, where you can add comments to a crys file, e.g., "Changed the relaxation factor to x.x" or "Control point temperature changed to x.x". Some people also try to identify the content of the file with a proper file name (which usually leads to rather large names after some time).

How can I create an optimum mesh?

A good way is to start with the default values for the mesh parameters. You should then select the regions which are of special interest (like the crystal or the crucible) or where you expect strong variations of the physical quantities. Here, you should stepwise improve the mesh parameters. Probably, it is not necessary to recompute the whole mesh, but only in the selected regions. Don't refine the parameters to strong, as this may result in a rather fine mesh, which will take some time to compute. Once you have defined the optimum parameters, you should once more compute the mesh in the whole furnace. It is interesting to note, that in CrysMAS for the temperature and convection computation usually the dependence of the results on the mesh is not so strong, due to the applied approximation schemes. For temperature computations the most important criterion is very often the accuracy of the resulting view factors, for convection computations a refined mesh may be needed due to stability issues.

When shall I use the Initial Values dialogue?

The basic intention is to specify the start values for time-dependent calculations. Nevertheless, you may also use this feature in the case of stationary calculations. In some cases, the numerical solution procedure is much more stable, if you start from a higher temperature value (e.g, 1500K) instead with the default value of 300K. In addition, in the case of a diverged computation you can reset the values without recomputing the mesh and the view factors.

My simulation is not converging. What shall I do?

For temperature calculations you should first of all try to identify if it is a problem with the controller or if the convergence problems exits already in the case of a simple forward simulation. The first thing is usually to reduce slightly the underrelaxation factor for the temperature computation (Setting Numerical parameters). If this does not help, several other causes should be checked. You may have to refine the mesh in some regions, for example near the phase interface (esp. for higher growth velocities). In the case of an inverse computation, you could reduce the value for the controller relaxation factor as well (Setting parameters for inverse simulation). Maybe you should also slightly increase the tolerance of the control points (Control Points for Inverse Simulation). You should also check the upper and lower limits of the heater powers (Heaters). If you have chosen the unconstrained solver this could cause problems. For convection computation things are more complicated, cf. What is the ideal strategy to make convection computations?

I get the message "Error in function cvTMaterial::Phase(). Inconsistent Material: xxx at T = xxx".

This message occurs if the temperature inside a region is higher than the value specified in the materials dialog (Materials dialog window). The default value is 10000K. The original idea was to provide information for the case that the temperature is higher than the material can support. In the case of the default value, the message is usually the first identification that your computation is diverging.

What is the ideal strategy to make convection computations?

This is a complicated question, which can not be answered in a general sense. Nevertheless, there are some hints. First of all it is important to recognize, that a convection calculation is usually much more effort than a simple temperature computation. You have to solve more variables, the velocity is a vector instead of a simple scalar value and the value for the pressure is only indirectly specified via the constraint of the continuity equation. In addition, the system of equations you are dealing with is much more unstable than in the case of a simple temperature equation. To get control over everything you have mainly two items to consider: the underrelaxation factor for the momentum equation (Setting Convection parameters) and the usage of material property ramps (Setting ramp parameters). A typical value for the underrelaxation factor in the case of a stationary computation is 0.1 or 0.2. The idea of the application of ramps is to start the computation with slightly increased values for the viscosity (e.g., increased by a factor of 40 (VGF) or even 1000 (Si-Cz)) and decreased values for the heat capacity (e.g., 0.1). The effect of this modifications is that the fluid is much more stabilized and the temperature field is not so strongly coupled with the flow field. The idea is to adjust these factors continuously to 1 during the computations. To do so, you just have to specify the values for the residuum of the energy equation and the momentum equation. The factor for the viscosity has to be decreased (e.g., factor 0.8) the value for the specific heat capacity has to be increased (e.g., factor 1.2). Normally you should not use a density ramp for buoyancy driven flows. The abortion criteria for a convection computation should not be too strict: 0.001 for the momentum equation and 1.e-6 for the energy equation are usually rather reasonable values.

I have problems to reach the control temperatures. What is the best solution strategy?

This is really dependent from case to case. The important thing is that you develop a feeling for the problem. Play a bit with the set-up, set a few heaters to fixed power and change the tolerance for the control points (Control Points for Inverse Simulation). Maybe you just have to use smaller values for the underrelaxation factor of the temperature controller (Setting parameters for inverse simulation).

What is the correct abortion criterion for a temperature computation?

By default the norm or the residuum of the temperature equation is required to be smaller than 1.e-12, which is a rather strict criterion - usually 1.e-10 might do it as well. If you are performing parameter studies, you may even use higher values, like 1.e-8. The best way is to check also the value for the temperature at certain locations inside the furnace.

Why shall I change the values of the underrelaxation factors?

Usually, smaller values for the underrelaxation factors help to stabilize the solution procedure. Nevertheless, this will also slow down the solution procedure. Try to find a compromise.

Which kind of matrix solver shall I use for my computations?

You will probably either work with the iterative solver STABBiCG or the direct solver GSSV. The others are nearly never used, even by the developers at CGL. Usually, iterative solvers are said to be a bit faster than the direct ones.

How can I avoid errors during the set-up of the model and the numerical parameters?

One important thing is to follow the CrysMAS menu structure. From left to right (preparation/computation/analysis) and from the top to the bottom in each pull down menu.

How can I check the accuracy of the view factor computation?

You can either have a look at the Show Solver Information dialogue (Show Solver Information) or perform the so called view factor test. The latter works as follows. Remove all heaters from your furnace model and set the boundaries to some arbitrary high value, e.g., 1500K. Start a computation and check the temperature field inside the furnace. If you have a strong deviation from the expected value of 1500K, refine the mesh at the corresponding positions.

Shall I use the constrained or the unconstrained solver?

The constrained solver is able to handle the limits for the heater power, which is a good reason to choose this solver. The unconstrained solver was the first solver implemented in CrysMAS and is for some cases more stable than the constrained one.

What is the meaning of a sensitivity analysis?

The idea is to create a furnace model and to investigate at the very beginning the influence of the material properties on the resulting temperature field. As an example you may vary each property by +/-30% and investigate it's impact on the temperature field. The big advantage of this strategy is that you get a pretty good understanding of the furnace model from the very beginning of your simulations. Although it may cost some time at first, you will surely save much more work time in the end.

What kind of data can I export with CrysMAS?

CrysMAS allows to export data in ascii format at points, lines or complete areas.

Which value should I choose for the regularization parameter?

The regularization parameter determines the importance of the heater power during an inverse simulation (Setting parameters for inverse simulation). A good value to start with is 1.e-6. Decreasing this value means reducing the importance of the heater power, by increasing this value the solution with the minimum heater power gains more and more importance. In the case of the UNCONSTRAINED solver and an unequal number of heaters and control points the value of the regularization parameter has to be non-zero. The CONSTRAINED solver does his job in this case also with a zero value for the regularization parameter.

Is it necessary to specify an underrelaxation factor for the pressure computation?

In CrysMAS we use the SIMPLER algorithm to compute the pressure. Here, the pressure is computed directly instead of a pressure correction as in the case of the SIMPLE algorithm. For SIMPLER no underrelaxation factor for the pressure computation is required.

What is the meaning of the "do steps at" parameters in the "Ramps" dialogue?

Once the norms of the residuum of the momentum and the temperature equation have fallen below the specified values, the next step in the ramp will be made. Dependent on the user definition the current values of viscosity and/or heat capacity will be multiplied by the specified factors. A good strategy is normally to start with slightly increased values for the viscosity (e.g. factor 100) and slightly decreased values for the specific heat capacity (e.g. factor 0.01).

What do I have to consider if I want to specify inflow boundary conditions?

In CrysMAS the normal vector of the outer boundaries is pointing outwards of the furnace geometry. This means if a user wants to specify an inflow condition (either heat flux or a velocity profile) the values have to be multiplied by the factor -1. ATTENTION: The specification of flux conditions at interior boundary lines is currently not supported by CrysMAS.

How can I set in- and outflow conditions for convection computations?

All necessary parameters are specified in the boundary dialog (Boundaries). At the inflow boundary the user has to specify a velocity profile for the variable UVW, which may look for a quadratic inflow profile something like: -vmax*(1-l*l) (the negative sign comes from the convention, that the outer normal is pointing outwards from the region.). At the outflow boundary the UVW variable has to be set to Outflow. In addition it is recommended to set the pressure to some fix value (Dirichlet), e.g. P=101325Pa. In- and outflow conditions are available both for incompressible and compressible flows. For the computation of compressible flow, it is sometimes advisable to specify the density-temperature relation directly, instead of using the "ideal gas" option. To do so, just specify the density as a function of T according to the well-known relation: density=(MolarWeight*Pressure)/(8.31451*T). This is probably the best way for laminar flow computations. For the computation you should as usual apply the "Ramps" utility of CrysMAS. If it turns out, that the flow is turbulent the "ideal gas" feature has to be activated.

How can I activate the turbulence model?

The activation of the turbulence model is simple. Just start with a normal laminar flow computation. Once you have obtained a reasonable start solution (you may use the ramp feature and use the laminar model as long as possible), stop the computation and activate the turbulence model in the Physical Phenomena dialogue (Physical Phenomena). Now, continue the fluid flow computation. No additional boundary conditions have to be specified. For additional questions on the utilization of the turbulence model just contact: CGL_support@iisb.fraunhofer.de

How can I specify a real vacuum region?

For regions which contain a material with the name "vacuum" no mesh will be created. In this case only radiative heat transfer will be considered for the temperature field computation.

How can I identify the current values as used in the material property ramp?

One way is to have a look at the terminal output. Once the momentum equations are solved, you get an output reading like this: 1 2 3 4 2.9 0.0039 1.4e-19 1 2.2e-05 0 1 0.1 40 0.056 ----- solved uv-p. The values nearly at the end "1 0.1 40" are the current multiplication factors for density (never use this), heat capacity and viscosity. Another way would be to re-open the ramp dialog in the GUI. In this case the current values are refreshed in the GUI.