


{"id":381093,"date":"2024-08-29T15:37:36","date_gmt":"2024-08-29T15:37:36","guid":{"rendered":"https:\/\/innovationspace.ansys.com\/forum\/forums\/topic\/help-parallelizing-this-udf\/"},"modified":"2024-08-29T15:37:36","modified_gmt":"2024-08-29T15:37:36","slug":"help-parallelizing-this-udf","status":"publish","type":"topic","link":"https:\/\/innovationspace.ansys.com\/forum\/forums\/topic\/help-parallelizing-this-udf\/","title":{"rendered":"help parallelizing this udf"},"content":{"rendered":"<p>&lt;p&gt;Hello,&nbsp;&lt;\/p&gt;&lt;p&gt;I&#8217;m running a udf to calculate heat flux values along 4 boundary faces in a 2d solid domain. this is the udf&lt;\/p&gt;&lt;div&gt;#include &#8220;udf.h&#8221;&lt;\/div&gt;&lt;div&gt;#include &#8220;sg.h&#8221;&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;DEFINE_EXECUTE_AT_END(Direct)&lt;\/div&gt;&lt;div&gt;{&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; int i, ID, zone[4] = { 4, 5, 6, 7};&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; double ds, A_by_es, flux, DTX, DTY, Area;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; double H_flux[3], A[ND_ND], es[ND_ND], dr0[ND_ND];&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; face_t f;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; cell_t c0;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; Thread* t0, * t;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; Domain* d = Get_Domain(1);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; FILE* fp;&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; fp = fopen(&#8220;Data.txt&#8221;, &#8220;a&#8221;);&nbsp; \/\/ Use append mode&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; if (fp == NULL) {&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; Message(&#8220;Error opening file!\\n&#8221;);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; return;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; }&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; for (i = 0; i &lt; 4; i++) {&nbsp; \/\/ Loop over all zones&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; flux = 0.0;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; DTX = 0.0;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; DTY = 0.0;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; Area = 0.0;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; ID = zone[i];&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; t = Lookup_Thread(d, ID);&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; begin_f_loop(f, t)&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; {&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BOUNDARY_FACE_GEOMETRY(f, t, A, ds, es, A_by_es, dr0);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Area += NV_MAG(A);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c0 = F_C0(f, t);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t0 = THREAD_T0(t);&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DTX += C_T_RG(c0, t0)[0] * es[0] * NV_MAG(A);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DTY += C_T_RG(c0, t0)[1] * es[1] * NV_MAG(A);&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flux += (C_T_RG(c0, t0)[0] * es[0] + C_T_RG(c0, t0)[1] * es[1]) * NV_MAG(A);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; }&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; end_f_loop(f, t)&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; DTX \/= Area;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; DTY \/= Area;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; flux \/= Area;&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; H_flux[i] = (32 * flux);&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; fprintf(fp, &#8220;Wall %d:\\t DTX=%f\\t DTY=%f\\t heat flux=%f\\n&#8221;, ID, DTX, DTY, H_flux[i]);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; &nbsp; &nbsp; Message(&#8220;Wall %d:\\t DTX=%f\\t DTY=%f\\t heat flux=%f\\n&#8221;, ID, DTX, DTY, H_flux[i]);&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; }&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp; &nbsp; fclose(fp);&lt;\/div&gt;&lt;div&gt;}&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;it builds and compiled correctly, after running the calculation I get this error&lt;\/div&gt;&lt;div&gt;= &nbsp; BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES&lt;br&gt;= &nbsp; RANK 0 PID 41404 RUNNING AT &#8220;xxxx&#8221;&lt;br&gt;= &nbsp; EXIT STATUS: -1 (ffffffff)&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;I think is because I&#8217;m running fluent in parallel and this code is not parallelized. I have read the udf manual but is not clear to me how to parallelized the code. Should I use PRINCIPAL_FACE_P macros of the condition #if RP_NODE, RP_HOST?&nbsp;&lt;\/div&gt;&lt;div&gt;&nbsp;&lt;\/div&gt;&lt;div&gt;Any advice is welcome. Thank you.&lt;\/div&gt;<\/p>\n","protected":false},"template":"","class_list":["post-381093","topic","type-topic","status-publish","hentry"],"aioseo_notices":[],"acf":[],"custom_fields":[{"0":{"_bbp_subscription":["350446","199"],"_bbp_author_ip":["129.100.205.224"],"_btv_view_count":["154"],"_bbp_topic_status":["unanswered"],"_bbp_topic_id":["381093"],"_bbp_forum_id":["27792"],"_bbp_engagement":["199","350446"],"_bbp_voice_count":["2"],"_bbp_reply_count":["1"],"_bbp_last_reply_id":["381957"],"_bbp_last_active_id":["381957"],"_bbp_last_active_time":["2024-09-09 11:11:10"]},"test":"csolanovuwo-ca"}],"_links":{"self":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/381093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics"}],"about":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":0,"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/topics\/381093\/revisions"}],"wp:attachment":[{"href":"https:\/\/innovationspace.ansys.com\/forum\/wp-json\/wp\/v2\/media?parent=381093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}