How can I obtain the time derivative of a variable?
This can be achieved with a user CEL routine as described below. INTRODUCTION In some transient simulations, it can be useful to have access to time derivative of variables. At time of writing, the current release (CFX-10.0) does not provide a method of obtaining time derivatives of variables for use in CEL expressions. This may become available as a standard feature of CEL in a future release of the code, but until this functionality is available, user Fortran provides a route to obtain time derivatives. Prospective users of this code should first check whether time derivatives of variables are available in CEL as a standard feature. DETAILS User Fortran routines USR_VEL_TDERIV and USR_PRES_TDERIV are wrapper routines for the utility routine USER_GETVAR, which returns a pointer to the time derivative field required. The variable name is hard-coded in these wrapper routines. The user CEL function takes on argument which specifies the required variable component for vector variables. For scalar variables, this argument has no effect. EXAMPLE The example is of transient flow through a cube. All components of the velocity time derivative are calculated as a vector additional variable. The pressure time derivative is calculated as a scalar additional variable. Maximum values are monitored and the variable fields are output to a transient results file. To run the example: - Create a user Fortran shared library from both user Fortran routines: cfx5mkext -name test usr_pres_tderiv.F usr_vel_tderiv.F - Edit the file test1.ccl such that the shared library path is correct: - Write the command language (test1.ccl) into the definition file: cfx5cmds -def test1.def -text test1.ccl -write - Run the solver: cfx5solve -def test1.def GENERAL USAGE The CEL functions (e.g. getutderiv(1) and getptderiv(1) in the example) can be used in a CEL expression wherever the timederivative of velocity or pressure are required. If time derivatives of other variables are required, it will be necessary to write further wrapper routines and associated CEL functions for these variables. |
||
|