|
[Sponsors] |
December 24, 2010, 04:29 |
Parallel INIT UDF trouble
|
#1 |
New Member
Join Date: Dec 2010
Posts: 2
Rep Power: 0 |
I've written a udf to patch in volume fractions on a simple rectangular, uniform grid, which works well in serial. However, it crashes fluent when interpreting it in the parallel solver (have to end process to get rid of it actually). Have made sure the cell loops use the parallel macro, but that didn't make much difference. Am wondering if anybody has seen a similar error, or has any hints on what exactly is causing it.
Here's the error message (full udf is below that): cpp -I"C:\PROGRA~1\ANSYSI~1\v120\fluent\fluent12.0.1 6/src" -I"C:\PROGRA~1\ANSYSI~1\v120\fluent\fluent12.0.1 6/cortex/src" -I"C:\PROGRA~1\ANSYSI~1\v120\fluent\fluent12.0.1 6/client/src" -I"C:\PROGRA~1\ANSYSI~1\v120\fluent\fluent12.0.1 6/multiport/src" -I. - UDFCONFIG_H="<udfconfig-host.h>" "E:\Numerical Studies\Linear Theory\phase_init_function_case4.c" E:\\Numerical Studies\\Linear Theory\\phase_init_function_case4.c:2: math.h: No such file or directory mixture_domain definition shadows previous definition Warning: E:\\Numerical Studies\\Linear Theory\\phase_init_function_case4.c: line 6: 999999 (..\src\mpsystem.c@1148): mpt_read: failed: errno = 10054 999999: mpt_read: error: read failed trying to read 4 bytes: No such file or directory MPI Application rank 0 exited before MPI_Finalize() with status -1073741819 The offending UDF: #include "udf.h" #include "math.h" /* domain pointer that is passed by init function is mixture domain */ DEFINE_INIT(phase_init_function_case4, mixture_domain) { int phase_domain_index; /* loop over all subdomains (phases) in the superdomain (mixture) */} |
|
January 6, 2011, 13:50 |
|
#2 |
Senior Member
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20 |
Try this:
Code:
#include "udf.h" #include "math.h" /* domain pointer that is passed by init function is mixture domain */ DEFINE_INIT(phase_init_function_case4, mixture_domain) {int phase_domain_index; cell_t cell; Thread *cell_thread; Domain *subdomain; real xc[ND_ND]; double yamp; double dx = 0.01/4; #if !RP_HOST/* loop over all subdomains (phases) in the superdomain (mixture) */ sub_domain_loop(subdomain, mixture_domain, phase_domain_index) {}/* loop if secondary phase */ if (DOMAIN_ID(subdomain) == 3) /* loop over all cell threads in the secondary phase domain */ thread_loop_c (cell_thread, subdomain) {/* loop if primary phase */ else if (DOMAIN_ID(subdomain) == 2)/*loop over all cells in secondary phase cell threads */ begin_c_loop_int (cell, cell_thread) {}C_CENTROID(xc,cell,cell_thread); yamp = 0.0001*cos(2*3.14159625*xc[0]/0.01); if (xc[1] > 0)} end_c_loop_int (cell,cell_thread)if (xc[1] < dx & yamp > 0) C_VOF(cell,cell_thread) = yamp/dx; else C_VOF(cell,cell_thread) = 0;elseif (xc[1] > -dx & yamp <= 0)C_VOF(cell,cell_thread) = 1 + yamp/dx;elseC_VOF(cell,cell_thread) = 1;/* loop over all cell threads in the secondary phase domain */ thread_loop_c (cell_thread, subdomain) {} #endif/*loop over all cells in secondary phase cell threads */ begin_c_loop_int (cell, cell_thread) {}C_CENTROID(xc,cell,cell_thread); yamp = 0.0001*cos(2*3.14159625*xc[0]/0.01); if (xc[1] > 0)} end_c_loop_int (cell,cell_thread)if (xc[1] < dx & yamp > 0)elseC_VOF(cell,cell_thread) = 1 - yamp/dx;elseC_VOF(cell,cell_thread) = 1;if (xc[1] > -dx & yamp <= 0)C_VOF(cell,cell_thread) = -yamp/dx;elseC_VOF(cell,cell_thread) = 0; |
|
January 6, 2011, 15:07 |
|
#3 |
New Member
Join Date: Dec 2010
Posts: 2
Rep Power: 0 |
Ok, I should have just posted this when I found it a while ago, just forgot about it while running a bunch of stuff in fluent, but I managed to solve the error following the instructions here: compiling udfs in win 64
Turns out this solved the issues I was having, and after doing this, I was able to load the existing code as compiled, rather than interpreted, and it worked just like it did in the serial version, without having to modify the function from what is in the original post. Edit, nevermind, I did end up adding the #if !RP_HOST and #endif as you suggested dmoroian, so that in combination with using the .net sdk command prompt to start fluent. |
|
Tags |
fluent 12.0, parallel error, udf error |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
problem loading UDF library in parallel cluster | Veera Gutti | FLUENT | 8 | July 26, 2016 08:24 |
UDF parallel error: chip-exec: function not found????? | shankara.2 | Fluent UDF and Scheme Programming | 1 | January 16, 2012 23:14 |
Help: how to realize UDF on parallel cluster? | Haoyin | FLUENT | 1 | August 6, 2007 14:53 |
parallel UDF problem | kerem | FLUENT | 2 | June 20, 2006 07:56 |
UDF in parallel version. | yobee | FLUENT | 0 | August 17, 2004 05:12 |