CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > ANSYS > CFX

How to make user routine just be called once in one time step?

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 27, 2017, 13:43
Default How to make user routine just be called once in one time step?
  #1
New Member
 
Tony
Join Date: Mar 2016
Posts: 24
Rep Power: 10
doublestrong is on a distinguished road
I defined a user routine to predict the pressure of outlet boundary condition. The user routine is a one-dimensional code and I want it's just excuted once in one time step. In other words, I use it to predict pressure at outlet for next time step.

I found that, if I directly exert the expression of the user routine for the pressure boundary condition, the user routine would be excuted for all loops in one time step. This is not what I want.

My solution is to define a variable to store the value returned by user routine. The variable is set as Update Loop = TRANS_LOOP , which means this variable will only be updated once during a time step. Value of the variable is defined by the expression of user routine. At the end of a time step, the variable starts to be computed, so the user routine would be excuted. Therefore the user routine runs once in one time step.

However, in this way, I find a problem that the user routine would be excuted tens of times at the last time step where I stop the simulation.

Here is my question:
1. are there other ways to make user routine just be called once in one time step?
2. in my way, why would the user routine be excuted tens of times at the last time step where I stop the simulation.

Thanks.
doublestrong is offline   Reply With Quote

Old   March 27, 2017, 19:36
Default
  #2
Senior Member
 
Join Date: Jun 2009
Posts: 1,880
Rep Power: 33
Opaque will become famous soon enough
Once you get into UserFortran programming, you are the one who understands every details of what is being done in your source code. It is not possible for the software to determine the internal dependencies of your function, so it assumes it can change with any of the variables, say coefficient loop within a time step.

ANSYS CFX memory management tools allow you to store the information that you know remains constant between calls, then you can store the critical information and retrieve it in subsequent calls.

Is there precomputed information available for this call ?
Y: locate the results in your private USER space, return such values
N: compute the values needed, store into your private USER space for future calls.

You must determine when a new timestep starts, so you update the results in the private space.

Hope the above helps,
Opaque is offline   Reply With Quote

Old   March 28, 2017, 05:27
Default
  #3
New Member
 
Tony
Join Date: Mar 2016
Posts: 24
Rep Power: 10
doublestrong is on a distinguished road
Thank you! And I also find a hint in the help document. It is in 18.7.3. User CEL Example 3:
  • INLET_T(areaAve(T)@Outflow,areaAve(p)@Outflow)

Note that the integrated quantity is passed into the inlet temperature function as an argument. The CFX-Solver recalculates these values during the coefficient loop so that the value is always up to date.
As I see, the subroutine may be called in any ways I did not expected. The method I posted is not good. I guess actually the subroutine would still be called a lot of times while saving result or transient result.


Now I define a variable in subroutine to record the current time step. I use the intrinsic fortran function SAVE to store the variable. In the next call to the subroutine, the main interations would be excuted if the new time step is different from the stored value, or the main interations would be skipped. In this way, the user routine is inevitablly still called a lot of times but some computation time can be saved.


I have another question. Can I just use SAVE to store the data which would be used in next call? Camparing with using CFX memory management tools, do you see any drawbacks of using SAVE? I just SAVE four arrays of real number. Each array is of about 10000 numbers.

doublestrong is offline   Reply With Quote

Old   October 22, 2018, 00:06
Default
  #4
FWP
New Member
 
陈晨
Join Date: Oct 2018
Posts: 7
Rep Power: 8
FWP is on a distinguished road
dear friend, could you explain me how to save array in user fortran. When i try to save array"save variable[NLOC]" error showed"cannot save automatic array". thanks for your reply
FWP is offline   Reply With Quote

Reply

Tags
time step, user routine


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Transient simulation not converging skabilan OpenFOAM Running, Solving & CFD 14 December 17, 2019 00:12
Extrusion with OpenFoam problem No. Iterations 0 Lord Kelvin OpenFOAM Running, Solving & CFD 8 March 28, 2016 12:08
simpleFoam error - "Floating point exception" mbcx4jc2 OpenFOAM Running, Solving & CFD 12 August 4, 2015 03:20
Help for the small implementation in turbulence model shipman OpenFOAM Programming & Development 25 March 19, 2014 11:08
OpenFOAM 1.7.1 installation problem on OpenSUSE 11.3 flakid OpenFOAM Installation 16 December 28, 2010 09:48


All times are GMT -4. The time now is 15:16.