|
[Sponsors] |
February 1, 2010, 15:26 |
Obtain equation residuals in UDF
|
#1 |
New Member
Robert Bressan
Join Date: Feb 2010
Posts: 1
Rep Power: 0 |
Hello!
I'm writing an UDF that makes an optimization. So every iteration, it must check if there was convergence in the solver, so I can make the proper changes in my profiles. Is there a way to return the current solver residuals? Regards, Robert |
|
February 9, 2010, 08:20 |
|
#2 |
Senior Member
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20 |
Well not in udf but here is a scheme line that gives you the residuals for the specified or current iteration (see also Wiki Fluent Scheme):
Code:
(get-residual-norms-at 1001) (solver-residuals) |
|
March 9, 2010, 04:06 |
|
#3 | |
Senior Member
Join Date: Feb 2010
Posts: 164
Rep Power: 17 |
Quote:
#include "udf.h" DEFINE_ON_DEMAND(residual_list) { int nw; real scaled_res; Domain*domain=Get_Domain(1); for(nw=0; nw<MAX_EQNS; ++nw) { if(strlen(DOMAIN_EQN_LABEL(domain,nw))>0) { if(0==DOMAIN_RES_SCALE(domain,nw)[nres-1]) DOMAIN_RES_SCALE(domain,nw)[nres-1]=1; scaled_res=DOMAIN_RES(domain,nw)[nres-1]/DOMAIN_RES_SCALE(domain,nw)[nres-1]; Message("%s equation,residual=%g\n",DOMAIN_EQN_LABEL(domain,nw ),scaled_res); } } } |
||
March 9, 2010, 04:34 |
What is nres?
|
#4 |
Senior Member
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20 |
Hi Ji,
Nice to see some undocumented macros at use, but what is 'nres' variable representing? |
|
March 9, 2010, 23:25 |
|
#5 |
Senior Member
Join Date: Feb 2010
Posts: 164
Rep Power: 17 |
||
April 1, 2012, 03:49 |
|
#6 |
New Member
Small Mayi
Join Date: Nov 2011
Posts: 26
Rep Power: 15 |
Dear my friends.Now, a similar problem I had come acrossed when edit a udf, while i copy this code and then try to compile as executable progame, an issue come out, the fluent tell me that subscript required array or poiter types. I think it maybe caused by the nres. Who can tell me how to treat it. I only want to obtain the residuals on the current time in my udf.
If anybody could have the same question and have solve it,please help me. Thank you. |
|
April 1, 2012, 04:02 |
...post the error
|
#7 |
Senior Member
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20 |
Could you post the error you get not from your own memory, but from the computer screen?
|
|
April 1, 2012, 04:11 |
|
#8 | |
New Member
Small Mayi
Join Date: Nov 2011
Posts: 26
Rep Power: 15 |
Quote:
(system "copy "C:\PROGRA~1\ANSYSI~1\v130\fluent"\fluent13.0.0\sr c\makefile_nt.udf "libudf\win64\2ddp\makefile" ") 已复制 1 个文件。 (chdir "libudf")() (chdir "win64\2ddp")() # Generating ud_io1.h test2.c ..\..\src\test2.c(11) : error C2109: 下标要求数组或指针类型 ..\..\src\test2.c(12) : error C2109: 下标要求数组或指针类型 ..\..\src\test2.c(13) : error C2109: 下标要求数组或指针类型 ..\..\src\test2.c(13) : error C2109: 下标要求数组或指针类型 Done. "下标要求数组或指针类型/chinese" means "subscript requried arrays or pointer types" Thank you!! |
||
April 1, 2012, 11:08 |
|
#9 |
Senior Member
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20 |
Is it possible to post the code? Apparently you're trying to use as array something that's not.
|
|
April 2, 2012, 10:47 |
|
#10 | |
New Member
Small Mayi
Join Date: Nov 2011
Posts: 26
Rep Power: 15 |
Quote:
I am very appreciated for your help. In order to avoid to determine the convergence in my udf according to the residuals, I had choosen another variable at the exit boundary ,and by monitoring its change to do the next work. |
||
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to add a UDF to a compiled UDF library | kim | FLUENT | 3 | October 26, 2011 22:38 |
udf temperature/velocity profile-> equation problems | roka1mtr | FLUENT | 2 | August 25, 2009 05:44 |
UDF Addidtional Force to momentum equation | sfawal | FLUENT | 10 | July 15, 2009 10:29 |
UDF to switch on energy equation after X iteration | mat w | FLUENT | 6 | December 5, 2005 08:35 |
DEFINE_DPM_OUTPUT macro UDF HELP | Puneet | FLUENT | 3 | November 28, 2003 11:55 |