Fluent 6.1: Try this if your UDF has memory allocation problems


The problem was discovered when client transferred a UDF that ran fine on AIX (Power 3 AIX 4.3.3) to IRIX (IRIX64 devirix 6.5 07121149 IP28). However the problem could occur on any platform and the solution is platform independent. The UDF basically consists of an EXECUTE_ON_DEMAND to do the initialization of the UDF and an DEFINE_ADJUST/DEFINE_SOURCE to be executed at every 10th iteration. The procedure to run the UDF was the following:
o Read the case file
o Compile the udfs and load them.
o initialize the solution
o Execute-On-Demand --->rotor_init
o perform 10 iterations.

The AIX result then was

Stick positions= 7.26 0.12 3.13
Trim measures: f=7483 lb, pm=10 ft.lb, rm=4985 ft.lb
Trim targets: f=7500 lb, pm=0 ft.lb, rm=5000 ft.lb

while IRIX gave

Stick positions= nan0x7fffffff nan0x7fffffff nan0x7fffffff
Trim measures: f=0 lb, pm=0 ft.lb, rm=0 ft.lb
Trim targets: f=7500 lb, pm=0 ft.lb, rm=5000 ft.lb

o Read the case file
o Compile the udfs and load them.
o initialize the solution
o perform one iteration. ( This step is important as it allocates memory for the UDM's, if this step is not followed, errors occured while executing the case on IRIX)
o Reinitialize the case.
o Execute-On-Demand --->rotor_init
o perform 10 iterations.
o IRIX gave correct results

CONCLUSION: Initialization does not always initialize all required memories. Running one iteration might do this required initialization.





Show Form
No comments yet. Be the first to add a comment!