您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > Fluent-UDF-16.0-L01-Introduction
1©2015ANSYS,Inc.June7,201516.0ReleaseLecture1:IntroductionUserDefinedFunctionsinANSYSFluent2©2015ANSYS,Inc.June7,2015WhyuseUserDefinedFunctions(UDFs)?TheFluentsolverisageneral-purposecode.InordertocustomizetheFluentsolver,userscanusetheirownC-codescalleduser-definedfunctions(UDFs)toaccomplish:•Specialboundaryconditions•Customizedorsolutiondependentmaterialproperties•Newphysicalmodels•Reactionrates•Sourceterms•Customizedpost-processing•Solvinguser-suppliedpartialdifferentialequations•More….3©2015ANSYS,Inc.June7,2015WhatareUserDefinedFunctions?ProgramswritteninCSimilarmechanismusedtodevelopmodelsinFluent–PowerfulandefficientExtendsthefunctionalityofANSYSFluent–Initialandboundaryconditions–Materialproperties–Materialandenergytransferthroughsourceterms–Modifysolutionvariables–Addingextraflowequations–Andmanymore…TypicallycompiledtoDLLs/sharedobjectlibraries–Loadedonlywhenrequired4©2015ANSYS,Inc.June7,2015SinusoidalWallTemperatureVariationT(x)=𝟑𝟎𝟎+𝟏𝟎𝟎𝐬𝐢𝐧𝝅𝒙𝟎.𝟎𝟎𝟓HeatedwallT=T(x)Adiabaticwallinletoutlet5©2015ANSYS,Inc.June7,2015WhatDoesItTaketoCreateaModel?Abilitytoaccessandmodify–InteractwiththeuserthroughaGUI/TUI–Fieldvariables–Geometricalandmeshdata–Hookstothesolveratappropriatestagesofthesolutioncycle–Conveniencemacros•Vectormacros•Loopingmacros•Parallelprogramming6©2015ANSYS,Inc.June7,201516.0ReleaseBasicsofUDFsUserDefinedFunctionsinANSYSFluent7©2015ANSYS,Inc.June7,2015C–TheFoundationforUDFsUDFswhencompiledcreateClibrariesthatFluentcanuseResourcestolearnC–ANSYSFluentCustomizationManual(AppendixA.CProgrammingBasics)–E.g.PracticalCProgramming,3rdEditionbySteveOualline–Referenceguide:CinaNutshell,TheDefinitiveReferencebyPeterPrinzandTonyCrawfordProgrammingpractices–Simplicity,ClarityandGenerality•Namingconventions•Macrosandcomments•Algorithmsanddatastructures•Designprinciples•Testing8©2015ANSYS,Inc.June7,2015UserAccesstotheFluentSolverUser-DefinedPropertiesUser-DefinedBCsUserDefinedINITIALIZESegregatedPBCSExitLoopRepeatCheckConvergenceUpdatePropertiesSolveTurbulenceEquation(s)SolveSpeciesSolveEnergyInitializeBeginLoopDBCSSolveOtherTransportEquationsasrequiredSolver?SolveMassContinuity;UpdateVelocitySolveU-MomentumSolveV-MomentumSolveW-MomentumSolveMass&MomentumSolveMass,Momentum,Energy,SpeciesUser-definedADJUSTSourcetermsSourcetermsSourcetermsSourcetermsSOLVERS9©2015ANSYS,Inc.June7,2015DataStructuresEachtypeofUDFispasseddifferentvaluesanddatastructuresdependingonitsfunction.MostUDFswillneedsolverdata.Thisisstoredinahierarchy:•Domainsarecollectionsofthreadsthatmakethewholemesh•Threads(orzones)arecollectionsofcellsorfaces•CellsandfacesaremadeofNodes10©2015ANSYS,Inc.June7,2015GeometricalEntitiesThepartsofameshare:Collectionofcellsandfacesarestoredinthreads.11©2015ANSYS,Inc.June7,2015DataStructuresTheterms‘Thread’and‘Zone’areinterchangeable.TheboundaryandcellzonesdefinedintheUserInterfacearestoredinternallyasthreads.–ZoneshaveanassociatedintegerIDseeninthesettingspanel–InaUDF,thecorrespondingthreadcanbeidentifiedusingthisID–Threadsareaninternaldatatypewhichstoresinformationaboutthemesh,models,properties,BCsallinoneplaceAcellhasinformationaboutitsboundingfacesandafacehasaccesstoitsneighbouringcells.12©2015ANSYS,Inc.June7,201516.0ReleaseIntroductiontotheCProgrammingLanguageUserDefinedFunctionsinANSYSFluent13©2015ANSYS,Inc.June7,2015CProgramming–BasicSyntaxRules–Eachstatementmustbeterminatedwithasemicolon;–Commentscanbeinsertedanywherebetween/*and*/–Allvariablesmustbeexplicitlydeclared(unlikeinFORTRAN)–Compoundstatementscanbecreatedbyenclosingmultiplestatementsbybraces:{}–Functiondefinitionshavethefollowingformat:return-value-typefunction-name(parameter-list){functionbody}14©2015ANSYS,Inc.June7,2015CProgramming–DataTypesBuilt-indatatypes:int,float,double,char,enumAnsysFluent:real,cxbooleanintniter,a;/*Declare‘niter’and‘a’asintegers*/floatdx[10];/*dxisanarrayofnumbersindexedfrom0to9:dx[0],dx[1],…,dx[9]*/enum{X,Y,Z};/*X,Y,Zareenumerationconstants=0,1,2*/reala;/*realisatypedefthatswitchesbetweenfloatforsingle-precisionanddoublefordouble-precisionarithmetic*/cxbooleanflag=TRUE;/*Pre-definedenumerationofFALSEandTRUE*/15©2015ANSYS,Inc.June7,2015CProgramming–Pointer•Apointerisaspecialkindofvariablethatcontainsanaddressinmemory,notcontent,ofanothervariable•Pointersaredeclaredusingthe*notation•Wecanmakeapointerpointtotheaddressofpre-definedvariableasfollows:int*ip;/*declaresapointernamedipthatpointstoanintegervariable*/inta=1;int*ip;/*(*ip)containsaninteger*/ip=&a;/*&areturnstheaddressofvariablea*/Message(“ipisapointerwithvalue%p\n”,ip);Message(“Theinteger‘a’pointedtobyiphasvalue=%d\n”,*ip);ipisapointerwithvalue0x40b2Theinteger‘a’pointedtobyiphasvalue=1Output:MessageMacro:•Definedinudf.h•SimilartoprintfinC•Recommendedtouse16©2015ANSYS,Inc.June7,2015CProgramming–PointersandArrays•Pointersandarraysarecloselyrelated:•Thenameofanarraywithoutanindexcanbeusedasapointertostartthearray•BUT:Anarraynamecannotbesettoanewvalue.Itisfixedtothevaluesetwhenitisdefinedasanarray.intar[10];/*arisanarrayof10integers*/int*ip;/*(*ip)co
本文标题:Fluent-UDF-16.0-L01-Introduction
链接地址:https://www.777doc.com/doc-4084297 .html