|
[Sponsors] |
![]() |
![]() |
#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 |
|
![]() |
![]() |
![]() |
![]() |
#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) |
|
![]() |
![]() |
![]() |
![]() |
#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); } } } |
||
![]() |
![]() |
![]() |
![]() |
#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? |
|
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Join Date: Feb 2010
Posts: 164
Rep Power: 17 ![]() |
||
![]() |
![]() |
![]() |
![]() |
#6 |
New Member
Small Mayi
Join Date: Nov 2011
Posts: 26
Rep Power: 15 ![]() |
![]() If anybody could have the same question and have solve it,please help me. Thank you. |
|
![]() |
![]() |
![]() |
![]() |
#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?
|
|
![]() |
![]() |
![]() |
![]() |
#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!! |
||
![]() |
![]() |
![]() |
![]() |
#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.
|
|
![]() |
![]() |
![]() |
![]() |
#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. |
||
![]() |
![]() |
![]() |
|
|
![]() |
||||
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 |