CFD Online Discussion Forums

CFD Online Discussion Forums (
-   Fluent UDF and Scheme Programming (
-   -   Linux commands to write udf for remote Linux nodes (

saayo3 June 5, 2013 09:18

Linux commands to write udf for remote Linux nodes
Good day, everyone!


* I am using ANSYS Fluent 14.0 to solve an incompressible steady-state turbulent wind flow problem around a group of buildings.

* I desire to configure the model in my PC operating on Windows OS & send to a remote Linux High Performance Computer (HPC) for faster processing.

* I have used udf (Interpreted) to define the inflow velocity, turb. kinetic energy & dissipation rate profiles.

* I have also been able to set up the fluent.cas & .dat files in the Journal file, and configured the pbs-script.

* But the job would not execute when I sent it to the remote system for processing (I keep getting error message).

* However, when I specified fixed values for the inlet parameters, the program ran.

* I guess the problem is with the udf. I could not write the necessary Fluent text commands for the udf in the Journal file.

* I tried to compile the udf but this also failed.

* I read from ANSYS Fluent udf manual that automatically compiling udfs is not supported on mixed Windows/Linux systems.

* Could someone. pls help me out with the necessary commands.


* In the present Journal file I intend to modify , the solution is terminated by the use of no of iterations using 'solve/iterate n'.

* I desire to use Residuals to terminate the solution.

* Pls what are the commands for effecting this in the Journal file?

Thanking you, in advance.


blackmask June 5, 2013 21:33

It should be ok to use the compiled udf as long as you keep the source file in the same directory as your case and data file. When you use the GUI setting interpreted UDF the path for the source files would be expanded to absolute path which would result in error for cases used in different OS. You can use TUI to do the compiling, e.g.

/define/user-defined/compiled-functions compile "libudf" yes "xxx.c" "" ""
/define/user-defined/compiled-functions load "libudf"

If you have not modified the default settings for residual, then it will stop as soon as residual criterion met. You can choose a sufficient large 'n' if you would like your criterion met no matter whatever it takes. But you should be aware convergence criterion is problem specific and an estimated criteria is not guaranteed to be met. Sometimes we want to iterate a certain steps to study the residuals change and we can use

/solve/monitors/residual/check-convergence no no no no no no no no
to disable the convergence criterion. How many 'no' depends on how many equations you have.

saayo3 June 7, 2013 03:34

Re: Linux commands to write udf for remote Linux nodes

Thanks so much for your wonderful contributions/comments to the questions I posted.

I now understand that the remote system uses the same order as our local system to monitor convergence.

However, I still attempted compiling the udf but failed.

By the procedure stipulated, the source file is to be kept in the same directory as the case and data files.

But the case and data files are not available or active in Fluent until Fluent is executed with all the b.cs which include the compiled udf. This is not really clear to me.

Pls., kindly shed light on this.

I another case, the domain I am modeling has a surrounding area with non-uniform surface roughness, in which case the surface Roughness Constant, Cs, is outside the upper limit of the range (0.5 - 1.0) that can be specified in Fluent.

I desire to specify a value of Cs greater than 1.0 as has been done in previous researches, and this requires udf.

Pls., what are the udf codes for writing constant value Roughness Constant, Cs.

Thanks again. And hoping to hear from you.


AvaShahrokhi March 6, 2014 11:35

Hi friends

I could sort out the problem. Here is the Script file format:

file/read-case *.cas
/define/user-defined/compiled-functions compile "libudf" yes "/address/…/…/…/xxx.c" "" ""
/define/user-defined/compiled-functions load "libudf"
file/read-data *.dat

the important thing is that
1- You should not whatsoever define the udf in the serial case that you make because in this case it will look for the address of the file on your computer. I even try text command and it did not work. You need to leave it for the journal file to define the udf file and call the related libraries.
2- I guess reading the data files comes afterwards.
3- I am not sure but I guess that the address of the *.c file should be added when udf is defined ( I have not tried not using the address! )

Hope you find these useful


sewgolam November 1, 2017 07:14

ansys fluent 18 on linux
Dear friend reasonly i instal ansys fluent 18 on linux.

ansys run oke on the system but when i compile a UDF it give a error. hoe can help me.

p, li { white-space: pre-wrap; }

for d in lnamd64/[23]*; do \
( \
cd $d; \
rm -rf *.{c,h,cpp,hpp}; \
for f in ../../src/*.{c,h,cpp,hpp} ../../src/makefile ../../src/user.udf; do \
if [ -f $f -a ! -f `basename $f` ]; then \
echo "# linking to" $f "in" $d; \
ln -s $f .; \
fi; \
done; \
echo ""; \
echo "# building library in" $d; \
if [ "" = "1" ]; then \
echo "# using gcc64"; \
make ARCHC=gcc64 -k>makelog 2>&1; \
else \
if [ "" = "1" ]; then \
echo "# using gcc"; \
make ARCHC=gcc -k>makelog 2>&1; \
else \
make -k>makelog 2>&1; \
fi; \
cat makelog; \
) \

# building library in lnamd64/2ddp
make[1]: Entering directory '/home/ronnie/Desktop/10-17-2017_lagrainge_solution/w/lnamd64/2ddp'
make[1]: *** No rule to make target 'Particle_law.c', needed by 'udf_names.c'.
make[1]: *** No rule to make target 'Q.c', needed by 'udf_names.c'.
make[1]: *** No rule to make target 'absorption_coeff_mixture.c', needed by 'udf_names.c'.
make[1]: *** No rule to make target 'reaction_rate2.c', needed by 'udf_names.c'.
make[1]: Target 'default' not remade because of errors.
make[1]: Leaving directory '/home/ronnie/Desktop/10-17-2017_lagrainge_solution/w/lnamd64/2ddp'

You can also see the 'log'-file in
the working directory for this compilation history


i donot understand why this happen and i found the following that explain why but i still donot understand what to do.

How to compile and load Fluent UDF on Linux

CFD linux programming troubleshooting
Corrections to the UDF manual (version 18.1)

Due to the following typographical errors, you cannot make the UDF. So you need to fix these:
  • Page 341-341: the path “path/ansys_inc/v181/fluent/fluent18.1.0/src/” is inccorect. In reality, it should be “path/ansys_inc/v181/fluent/fluent18.1.0/src/udf/
  • Page 342: In procedure 5, the file of interest is NOT the makefile.udf2 but makefile.udf . -
  • AND rename the copied makefile.udf to makefile . The manual says Makefile but this doesn’t work.
  • Most importantly, it appears you need to copy the makefile into the each of the subdirectory under the architecture directory, e.g., /libudf/lnamd64/3ddp_host/ and /libudf/lnamd64/3ddp_node/ . This information is absent in the manual at all, which is really annoying. Could be environment dependent? but still…
Then, you should finally be able to do the

please help

All times are GMT -4. The time now is 06:17.