-
-
July 22, 2021 at 9:34 am
Burhan Ibrar
SubscriberHello Dear,
I hope this thread will find you well.
I am doing a very simple test where i use 6dof udf but in that udf i want to get the velocity from the actual results. The main problem is complex but i receive the same error as shown below. I just want to have some results in my udf through looping or some other way which i do not know. I also wrote the UDF here below for reference. The thing is that when i do not use a loop then it works fine but i need to have a loop to get the velocity or some other variable from the results.
I hope you understand the problem and give me feedback asap with your experience. Thank you.
UDF:
/************************************************** *****
SDOF property compiled UDF with external forces/moments
************************************************** *****/
#include "udf.h"
static real acc = 4.631;
static real mass = 5;
static real velocity;
DEFINE_SDOF_PROPERTIES(acce, prop, dt, time, dtime)
{
prop[SDOF_MASS] =5;
prop[SDOF_IXX] = 5.2e-5;
prop[SDOF_IYY] = 4.1667e-3;
prop[SDOF_IZZ] = 1;
prop[SDOF_ZERO_TRANS_X] = False;/* boolean, allow translation in x-direction */
prop[SDOF_ZERO_TRANS_Y] = True; /* boolean, suppress translation in y-direction */
prop[SDOF_ZERO_TRANS_Z] = True; /* boolean, suppress translation in z-direction */
prop[SDOF_ZERO_ROT_X] = True; /* boolean, suppress rotation around x-axis */
prop[SDOF_ZERO_ROT_Y] = True; /* boolean, suppress rotation around y-axis */
prop[SDOF_ZERO_ROT_Z] = True; /* boolean, allow rotation around z-axis */
{
if(time >= 0) {
Thread *f_thread;
face_t f;
velocity=0;
begin_f_loop(f, f_thread)
{
velocity += F_U(f, f_thread);
}
end_f_loop(f, f_thread)
Message(" V1 %d /n",velocity);
prop[SDOF_LOAD_F_X] = mass*acc;
}
}
}
Error:
"V1 0 /n
=========================
==============
================================================== ================================================== ============
Node 5: Process 20896: Receiv============================================ ==============
========================================
Node 1: Proc=================ess 20948: Received signal ====================SIGSEGV.
================================================== ============================================
=========================================
=============================Node 3: Process 20648: Received si=ed signal gn======================SIGSEGV.
================================================== =al SI========G===============================
S==EG====V.
=======
No======
============
Node 0: Prde 2: Process 17612: Received sig=====================o========================= ========================================
============ncess 1936: Received signal Sal SIGSEGV.
=========================IGSEGV.
================================================== ================================================== ========
Node 4: ===========Process 10852: Rece======ived signal SIGSEGV.===
================================================== =======================
==================
999999: mpt_accept: error: accept failed: No such file or directory"
July 23, 2021 at 5:42 pmSurya Deb
Ansys EmployeeHello,
You f_thread seems undefined. You need to fetch the f_thread. You can use Lookup_Thread macro. check here [https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/corp/v211/en/flu_udf/flu_udf_sec_special_macros.html?q=lookup%20thread].
Also check your logic regarding the summation of the velocity.
Regards SD
July 26, 2021 at 9:04 amBurhan Ibrar
SubscriberHello sdeb thank you so much for your reply and it helped me a lot. But i have a problem where i am using overset model and now what i did that i define the motion on walls and for overset fluid domain i defined relative motion and UDF with only properties e.e mass, rotation and translation. Is this the right way to do it because when i define the same udf with motion on both then i get errors.
2nd thing is that i have attached the code below when i used my calculation for (#if !RP_HOST) and solving it parallel but in results i have variable output 6 times and every variable has a different value. If you can help me to get the one value which should be equal to the one we can see in dynamic mesh window. What i understood from manual that all variable values which i see in console are from different nodes and now i want to let them communicate so get the right value which i do not know yet.
And for writing a file with variables like time and velocity should i also use #if !RP_HOST or #if RP_NODE, etc.?
your help will really appreciated. thank you.
/*******************************************************
SDOF property compiled UDF with external forces/moments
*******************************************************/
#include "udf.h"
static real acc = 4.631;
static real mass = 5;
static real velocity, vel, area_tot, area[3];
DEFINE_SDOF_PROPERTIES(acce, prop, dt, time, dtime)
{
prop[SDOF_MASS] =5;
prop[SDOF_IXX] = 8.333e-4;
prop[SDOF_IYY] = 4.1667e-3;
prop[SDOF_IZZ] = 5.2e-5;
prop[SDOF_ZERO_TRANS_X] = False;/* boolean, allow translation in x-direction */
prop[SDOF_ZERO_TRANS_Y] = True; /* boolean, suppress translation in y-direction */
prop[SDOF_ZERO_TRANS_Z] = True; /* boolean, suppress translation in z-direction */
prop[SDOF_ZERO_ROT_X] = True; /* boolean, suppress rotation around x-axis */
prop[SDOF_ZERO_ROT_Y] = True; /* boolean, suppress rotation around y-axis */
prop[SDOF_ZERO_ROT_Z] = False; /* boolean, allow rotation around z-axis */
{
#if !RP_HOST
Thread *t;
face_t f;
Domain *domain;
int nid;
domain = THREAD_DOMAIN (DT_THREAD (dt));
nid = THREAD_ID (DT_THREAD (dt));
t = Lookup_Thread (domain, nid);
velocity=0.0;
area_tot=0;
#endif
#if !RP_HOST
begin_f_loop(f, t)
if (PRINCIPAL_FACE_P(f, t))
{
F_AREA(area,f,t);
area_tot += NV_MAG(area);
velocity += F_U(f, t)*NV_MAG(area);
}
end_f_loop(f, t)
/*area_tot=PRF_GRSUM1(noface);
velocity=PRF_GRSUM1(velocity);*/
#if RP_NODE
vel = velocity/area_tot;
Message("\nV1 %f Area Total %f /n",vel, area_tot);
#endif
#endif
July 26, 2021 at 9:06 amBurhan Ibrar
Subscriber
hello sdeb Please read above. I forgot to quote your message.
July 26, 2021 at 9:12 amBurhan Ibrar
Subscriber
The results are as follows. Initially the variable V1 has 6 different values but after some time only one has a value and other has ind value which i do not understand. And in later stages the value is equal to the one in dynamic mesh. I need to have only one accurate value which you can see in 2nd results which i can use further in my program for comparison. First results
V1 0.004384 Area Total 0.001615 /n done.
Updating mesh at time level N...
V1 0.004380 Area Total 0.009207 /n
V1 0.004389 Area Total 0.004913 /n
V1 0.004389 Area Total 0.005528 /n
V1 0.004385 Area Total 0.001727 /n
V1 0.004380 Area Total 0.000947 /ndone.
2nd Results
V1 -nan(ind) Area Total 0.000000 /n done.
Updating mesh at time level N...
V1 -nan(ind) Area Total 0.000000 /n
V1 0.030577 Area Total 0.023936 /n
V1 -nan(ind) Area Total 0.000000 /n
V1 -nan(ind) Area Total 0.000000 /n
V1 -nan(ind) Area Total 0.000000 /ndone.
July 26, 2021 at 10:05 pmSurya Deb
Ansys EmployeeHello,
It is not possible to check your entire UDF. But I think you might be missing commands to transfer from node to host after global summing.
Check this link for a parallel UDF example. [https://ansyshelp.ansys.com/account/secured?returnurl=/Views/Secured/corp/v212/en/flu_udf/flu_udf_sec_parallel_example.html?q=parallel]
Regards SD
July 27, 2021 at 1:43 pmBurhan Ibrar
SubscriberThank you Sdeb,
Issue is resolved.
Viewing 6 reply threads- The topic ‘Need help in 6dof udf with a face loop’ is closed to new replies.
Ansys Innovation SpaceTrending discussionsTop Contributors-
3467
-
1057
-
1051
-
918
-
896
Top Rated Tags© 2025 Copyright ANSYS, Inc. All rights reserved.
Ansys does not support the usage of unauthorized Ansys software. Please visit www.ansys.com to obtain an official distribution.
-

Ansys Assistant

Welcome to Ansys Assistant!
An AI-based virtual assistant for active Ansys Academic Customers. Please login using your university issued email address.

Hey there, you are quite inquisitive! You have hit your hourly question limit. Please retry after '10' minutes. For questions, please reach out to ansyslearn@ansys.com.
RETRY