|
[Sponsors] |
June 2, 2021, 06:58 |
Call FORTRAN files as UDF in a Linux system
|
#1 |
New Member
Beatriz
Join Date: Jun 2021
Posts: 11
Rep Power: 5 |
I'm sorry my vocabulary, but I'm new at this topics.
I have some FORTRAN files and I like to use them as source UDF files in FLUENT. The FORTRAN files calculate source terms for some equations in FLUENT and need to receive some variables from the simulation. I am following the procedure of "ANSYS Fluent UDF Manual", section 5.4. Link Precompiled Object Files From Non-ANSYS Fluent Sources. First I tried to do a similar case of the given example (section 5.4.3), and for the "make "FLUENT_ARCH=lnamd64"" some error messages appeared, like: "makefile: No such file or directory"; "*** No rule to make target 'makefile'"; "Failed to remake makefile 'makefile'"; "*** No targets specified and no makefile found" If you have any idea of what might be causing this error or if you have any special documents please share with me. Thank you, Beatriz |
|
June 2, 2021, 10:29 |
|
#2 |
Senior Member
Join Date: Nov 2013
Posts: 1,965
Rep Power: 27 |
No answer, but if the Fortran file are not too big, it might be easier to just rewrite it in c.
__________________
"The UDF library you are trying to load (libudf) is not compiled for parallel use on the current platform" is NOT the error after compiling. It is the error after loading. To see compiler errors, look at your screen after you click "build". |
|
June 2, 2021, 22:17 |
|
#3 |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
looks like you don't have file called makefile in your directory
also you can try to add environment variable Code:
make FLUENT_INC=/apps/ansys_inc/v192/fluent FLUENT_ARCH=lnamd64 -f makefile makefile is the name of makefile (which contains the list of directives for compiler) the file to be executed with make command looks something like this (depends on fluent version): Code:
## ## Copyright 1987-2018 ANSYS, Inc. All Rights Reserved. ## All Rights Reserved ## #----------------------------------------------------------------------# # Makefile to call user's makfile for user defined functions. # Do not modify this Makefile. # # Usage: make "FLUENT_ARCH=arch" # were arch is ultra, hp700, irix6r8, etc. # # sccs id: %W% %G% #----------------------------------------------------------------------# SHELL= /bin/sh FLUENT_ARCH= unknown_arch DIR= $(FLUENT_ARCH)/[23]* SRC= ../../src/*.{c,h,cpp,hpp} ../../src/makefile ../../src/user.udf all: for d in $(DIR); do \ ( \ cd $$d; \ rm -rf *.{c,h,cpp,hpp}; \ for f in $(SRC); 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 [ "$(USE_GCC64)" = "1" ]; then \ echo "# using gcc64"; \ make ARCHC=gcc64 -k>makelog 2>&1; \ else \ if [ "$(USE_GCC)" = "1" ]; then \ echo "# using gcc"; \ make ARCHC=gcc -k>makelog 2>&1; \ else \ make -k>makelog 2>&1; \ fi; \ fi;\ cat makelog; \ ) \ done clean: for d in $(DIR); do \ ( \ if [ -f "$$d/makefile" ]; then \ cd $$d; \ make clean; \ fi;\ ) \ done
__________________
best regards ****************************** press LIKE if this message was helpful |
|
June 3, 2021, 08:25 |
ld: i386 architecture of input file is incompatible with i386:x86-64 output
|
#4 |
New Member
Beatriz
Join Date: Jun 2021
Posts: 11
Rep Power: 5 |
Thanks for your replies Pakk and AlexanderZ!
The makefile in the source directory (/libudf/src) needs to be written with low case ("makefile" and no "Makefile"). It was a stupid mistake. But now, when I execute the command "make "FLUENT_ARCH=lnamd64"", in the libudf directory created, another error message appears. The message is the following: " # Linking libudf.so because of makefile user.udf udf_names.c udf_names.o test_use.o ld -shared -lm udf_names.o test_use.o test.o -o libudf.so ld: i386 architecture of input file `test.o' is incompatible with i386:x86-64 output make[3]: *** [makefile:123: libudf.so] Error 1 make[3]: Leaving directory '/home/zirtaeb/Code/Coupling_Code_Fluent/test_mass_source_2D_simple/test_mass_source_2D_simple_files/dp0/FFF/Fluent/libudf/lnamd64/2ddp_node' make[2]: *** [makefile:194: lnamd64] Error 2 make[2]: Leaving directory '/home/zirtaeb/Code/Coupling_Code_Fluent/test_mass_source_2D_simple/test_mass_source_2D_simple_files/dp0/FFF/Fluent/libudf/lnamd64/2ddp_node' make[1]: *** [makefile:119: default] Error 2 make[1]: Leaving directory '/home/zirtaeb/Code/Coupling_Code_Fluent/test_mass_source_2D_simple/test_mass_source_2D_simple_files/dp0/FFF/Fluent/libudf/lnamd64/2ddp_node' " Any advice or help is greatly appreciated! Thank you, Beatriz |
|
June 3, 2021, 23:40 |
|
#5 |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
is test.o your FORTRAN precompiled file?
lokks like it was compiled in other system, may be with x32 operation system, but fluent compiler uses x64 or vice versa don't have other ideas
__________________
best regards ****************************** press LIKE if this message was helpful |
|
June 4, 2021, 04:51 |
|
#6 |
New Member
Beatriz
Join Date: Jun 2021
Posts: 11
Rep Power: 5 |
Hello again Alexander,
Yes, my fortran compiled object is test.o. I compiled the fortran code in the same machine, but using, for example, the flag "-m32". I tried to remove this flag and now no error messages appear while executing the Makefile on the libudf directory. Thanks for your reply! |
|
October 21, 2022, 16:53 |
Fortran compiler options for call in Fluent UDF compiled in VS 2017 with nmake
|
#7 |
New Member
Join Date: Nov 2020
Posts: 2
Rep Power: 0 |
Hi Beatriz,
Did you manage to compile your UDF source file calling the pre-compiled Fortran subroutine/function? If yes which fortran compiler and flags did you use to create your object test.o? Using GNU fortran compiler I have: gfortran addNumbers.f90 subNumbers.f90 -g -O0 -c Output: Création de la bibliothèque libudf.lib et de l'objet libudf.exp addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_st_write référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_st_write addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_transfer_character_write référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_transfer_character_write addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_st_write_done référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_st_write_done addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_st_read référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_st_read addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_transfer_integer référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_transfer_integer addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_st_read_done référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_st_read_done addNumbers.o : error LNK2019: symbole externe non résolu _gfortran_transfer_integer_write référencé dans la fonction addnumbers_ subNumbers.o : error LNK2001: symbole externe non résolu _gfortran_transfer_integer_write libudf.dll : fatal error LNK1120: 7 externes non résolus NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bi n\HostX64\x64\link.EXE"'*: code retour '0x460' Stop. symbole externe non résolu = unresolved external symbol I'm not sure about compiler flags compatibility with ANSYS Fluent nmake. Thanks very much, Raph |
|
Tags |
fluent, fortran, udf |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Problem loading UDF in Linux environment | hjan23 | FLUENT | 0 | December 15, 2017 05:09 |
How to call FORTRAN files as UDF? | Ehsan-F | Fluent UDF and Scheme Programming | 6 | September 11, 2012 12:03 |
Problem of UDF using fortran programs | hlsky | FLUENT | 0 | October 12, 2011 12:07 |
Comparison between C/C++ and Fortran? | rick | Main CFD Forum | 45 | September 6, 2011 01:52 |
Dual Boot Windows and Linux and Go Open Source | andyj | Main CFD Forum | 2 | October 21, 2010 17:49 |