{"id":182,"date":"2020-09-22T20:24:17","date_gmt":"2020-09-22T18:24:17","guid":{"rendered":"http:\/\/alma-consulting.eu\/?p=182"},"modified":"2022-05-28T13:49:17","modified_gmt":"2022-05-28T11:49:17","slug":"working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis","status":"publish","type":"post","link":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/","title":{"rendered":"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Where do we want to go from here?<\/strong><\/h2>\n\n\n\n<p>In a previous post, I tried (and from the feedback I got, somehow succeeded) to introduce the beauty of developing extensions to the core capabilities of ANSYS by means of APDL Math commands.<\/p>\n\n\n\n<p>Now, that was merely an introduction, using but the most simple physics (linear thermal model) and solver (modal thermal). There is of course much more to be expected from such general capabilities as matrix manipulation, and since they are meant to address some \u201cunconventional\u201d needs, it would hardly make sense to go on and try finding the additional capability \u201ceverybody was waiting for\u201d.<\/p>\n\n\n\n<p>Hence, I am going to follow the track I started so far, and resume my journey into the wonders of APDL Math with the natural extension of modal analysis that is, harmonic analysis. This might be directly useful to a few readers, and hopefully will be an incentive for users to use the existing solvers for answering their own needs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Thermal Harmonic Analysis at a Glance<\/strong><\/h2>\n\n\n\n<p>Thermal harmonic analysis is so scarcely used that, as of May 2018, even Google had not heard about it. No, seriously, not a single match. Gulp. But don\u2019t panic, it is nothing esoteric, really. The concept was introduced as early as the 1960\u2019s (see ref [1]), and is used under one form or the other every time it is necessary to design a system with high immunity against thermal disturbances. Actually, you would encounter it under one form or the other whenever stringent dimensional stability &#8211; hence thermal stability &#8211; is required.<\/p>\n\n\n\n<p>Specifically, it can provide quantitative answers to crucial design questions: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Q: What will be the net fraction of external temperature fluctuations that will propagate into my system?<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>A: Compute Thermal Transmissibility <em><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-66e88ee4d85fcd971c93ca159f8b9601_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#114;&#40;&#102;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"45\" style=\"vertical-align: -5px;\"\/><\/em> between the \u201cnoisy\u201d and the \u201cquiet\u201d side. Once obtained, the temperature fluctuations Power Spectral Density (PSD) on the quiet side will be given by the usual relationship for linear systems (i.e. <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-8c703a88a9f4c0710793ba4cc20cf373_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#80;&#83;&#68;&#95;&#123;&#84;&#95;&#123;&#113;&#117;&#105;&#101;&#116;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"75\" style=\"vertical-align: -7px;\"\/>=<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-bafec0e896b16baa41b034c66cd06974_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#118;&#101;&#114;&#116;&#32;&#84;&#114;&#40;&#102;&#41;&#32;&#92;&#118;&#101;&#114;&#116;&#94;&#50;&#80;&#83;&#68;&#95;&#123;&#84;&#95;&#123;&#110;&#111;&#105;&#115;&#121;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"139\" style=\"vertical-align: -7px;\"\/>). From this, estimating the RMS temperature fluctuation on the quiet side is straightforward. Even more importantly, it also grants knowledge to the temperature drift <em>rate<\/em>  and its Allan Variance, that in turn allows one to estimate the maximum allowable duration for an experiment .<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>Q: Assuming stability demands are not fulfilled with a passive design: Can I develop an \u201copen loop\u201d frequency response, so as to decide where to put sensors and actuators (heaters) for an active thermal control system?<\/li><li>A: Thermal Harmonic response will provide just what you need, that is, the complex frequency response, giving access to gain and phase. This in turn can be used at the system level to decide on the most appropriate sensors \/ actuators \/ controller logic configuration<\/li><li>Q: Assuming I am working with a purely optical system, how deleterious will short duration fluctuations of light beam?<\/li><li>A: Compute the thermal harmonic response of the system at the beam oscillation frequency (or frequencies). The thermal solution can then be used to estimate the severity of thermally induced distortions (either variation of the material\u2019s refractive index with temperature or thermoelastic expansion) on the final optical performance.<\/li><li>Q: Assuming I am working with a structural part submitted to complex thermal loading (i.e. randomly distributed, time and space wise), how can I estimate thermal fatigue?<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>A: Thermal fatigue effects can be effectively captured, since Thermal Harmonic Analysis gives access to (complex) structural temperature fields, with no restriction on the analysis bandwidth. These temperature fields can be used to estimate mechanical stress response patterns, just like the ones produced by a conventional random vibration analysis.<\/li><\/ul>\n\n\n\n<p>Especially when both thermal and mechanical effects are involved, efficiency is of paramount importance, because of two technical hurdles acting in conjunction: Firstly, since mechanical stress is the final quantity of interest, spatial resolution (mesh size) becomes non-negotiable. And secondly, the loading itself spans orders of magnitudes in correlation length and frequencies, hence the model cannot be strictly restricted to the area of interest without introducing severe bias in the results. Running long transient analyses of a finely meshed model with small time steps is exactly what one should avoid doing.<\/p>\n\n\n\n<p>Even if your application does not involve thermal mechanical phenomena, as soon as linear behavior can be granted, you might want to consider harmonic analysis. Working in the frequency domain not only allows for improved insight but it also drastically reduces the computational burden.<\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>&nbsp;Thermal Harmonic Analysis using APDL Math<\/strong><\/h2>\n\n\n\n<p>To help developing an intuition, let me review the similarities and differences between structural and thermal frequency response analysis.<\/p>\n\n\n\n<p>Mathematically, both look very much the same, i.e. what we are seeking are solutions to dynamic equilibrium equations:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-table is-style-regular\"><table><tbody><tr><td>Domain<\/td><td>Equation solved<\/td><td>Terms explained<\/td><\/tr><tr><td>Structural<\/td><td> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-dca56416ba4803989cadb68b07d60a48_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#40;&#91;&#75;&#93;&#43;&#106;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#32;&#91;&#67;&#93;&#32;&#45;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#50;&#32;&#91;&#77;&#93;&#32;&#41;&#32;&#85;&#61;&#70;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"226\" style=\"vertical-align: -5px;\"\/><\/td><td><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-0de4c35b4777116e7d409cf1f97f7c0f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#91;&#75;&#93;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"22\" style=\"vertical-align: -5px;\"\/> stiffness<br><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-c01dd89cf3e871779a9e1e59c15e2322_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#91;&#67;&#93;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"20\" style=\"vertical-align: -5px;\"\/> damping<br><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-c66ec33ed2edaa35cd49d02c69e089a3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#91;&#77;&#93;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"25\" style=\"vertical-align: -5px;\"\/> mass<br><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-2510519bbe1660dfdffb4195c7287343_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> force vector<\/td><\/tr><tr><td>Thermal<\/td><td><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-d822a8cd72255da841658f2a55f249a5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#40;&#91;&#75;&#93;&#43;&#106;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#32;&#91;&#67;&#93;&#32;&#41;&#32;&#84;&#61;&#80;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"155\" style=\"vertical-align: -5px;\"\/><\/td><td><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-0de4c35b4777116e7d409cf1f97f7c0f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#91;&#75;&#93;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"22\" style=\"vertical-align: -5px;\"\/> conductivity<br><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-c01dd89cf3e871779a9e1e59c15e2322_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#91;&#67;&#93;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"20\" style=\"vertical-align: -5px;\"\/> capacity<br><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-650eb7688af6737ac325425b5c9a5982_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#80;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> power vector<\/td><\/tr><\/tbody><\/table><figcaption>Equations solved for harmonic solution : structural vs thermal <\/figcaption><\/figure>\n\n\n\n<p>Both analyses will yield complex solution vectors, giving real (in phase) and imaginary (out of phase) part of the structural response, for a harmonic excitation at circular frequency<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-707fcec15e450815730425a6607a1858_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/>.<\/p>\n\n\n\n<p>Now, the fundamental difference is the following: while inertia forces are 180\u00b0 out of phase with elastic forces, there will be frequencies where cancellation occurs and hence the structure will have zero apparent stiffness, that is, resonance will occur, only limited by damping forces.<\/p>\n\n\n\n<p>In the thermal case, the capacitance terms will remain 90\u00b0 out of phase with the conductivity terms, hence cancellation will never occur. Consequently, dynamic temperature response amplitudes will always have amplitude smaller than that of the static equilibrium case, and phase will always be negative.<\/p>\n\n\n\n<p>Needless to say, if the loading consists of enforced temperature at the system boundary, the response temperature field should be uniform for quasi-static response (i.e. for temperature variations with periods much longer than the first thermal mode time constant, see first post on the subject).<\/p>\n\n\n\n<p>Now let\u2019s turn to the APDL input deck.<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\"><li>It reads in conductivity, capacitances matrices, and <em>one<\/em>&nbsp;forcing (RHS) vector,<\/li><li>It repeatedly solves for the entire problem at frequencies ranging from <em>F_begin<\/em> to <em>F_end<\/em>.<\/li><li>Then, the response at user-selected key nodes are stored into two matrices(<em>TsolR<\/em> and <em>TsolI<\/em>), and written to a text file<\/li><li>Optionally, the entire solution field can be stored into two .RTH files (one for real part, the other for imaginary part). This complex solution can be either displayed using POST 1 capabilities or used as inputs for a downstream structural analysis (using LDREAD).<\/li><\/ol>\n\n\n\n<p>Mind you, we are facing a bit of bookkeeping, because at a later point we might want to switch to a structural analysis. It is therefore my recommendation to change job names for each step of the analysis (generation of conductivity and capacitance matrices, load vector, thermal FRF, etc), following the same prophylaxis rules than for superelements.<\/p>\n\n\n\n<p>Note that if your problem involves prescribed temperatures instead of prescribed nodal power, the script need not to be changed, the only requirement being that prescribed DOF values (D command) are applied during as soon as the matrix generation step (actual DOF values are not used at that step, but prescribed DOFs values are eliminated from the solution phase).<\/p>\n\n\n\n<p>To emphasize, unless prescribed temperature node <em>set<\/em>&nbsp;are strictly identical, load cases won\u2019t solve using the same solver engine (i.e. they need to be written to separate .FULL files), because the set of unknown degrees of freedom won\u2019t be the same (just like the a-set and u-set of degree of freedom, for those of you who are familiar with Nastran DMAP. And yes, I happened to use that tool too, back in the days. Go on, hiss!). Have a look at Chapter 14.6 of the Mechanical APDL \u201cTheory Reference\u201d Manual if you need details.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>! Setup Model\nGenerationJobName=\u2019Gene_Pass\u2019\n\/filnam,%GenerationJobName%,ON\n\n\u2026\n! Make THREE dummy transient solve to separately write conductivity, capacitances and load vector matrices to .FULL files named Run_Thermal_MatK, Run_Thermal_MatC, Run_Thermal_VecF \n\nfini<\/code><\/pre>\n\n\n\n<p>Also, it is good practice to store into a variable the jobname used at the generation pass, so that will be saved in the database. This way, you might interoperate scripts much more easily.<\/p>\n\n\n\n<p>Next, we need to specify solver options. In this case, only the frequency bandwidth needs to be specified. For thermal problems, I suggest sticking to the regular spacing (in a logarithmic sense). As engineering unit, I personally use cycles per day (cpd) rather than cycles per second (Hz), but that is a matter of personal taste and of course of the physics you need to address. Secondly, we want to select a few nodes at which response temperature is of particular significance for the problem at hand.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>! Change jobname to avoid contaminating .FULL or results file\n\/filnam,Run_FRF_Thermal,ON\n\n! Load parameters\nF_begin=.1\t\t\t! lowest frequency &#91;cpd]\nF_end=1440\t\t\t! highest frequency &#91;cpd]\nF_Nb_Steps=30\t\t! Number of steps to be used for freq. sweep &#91;1]\n\n! Output Parameters\nNbOutputNodes=3\nListOutputNodes(1)=MyPreferredNode,AnotherNode,OneLastNode\n\n! STEP1: IMPORT REQUIRED DATA\n! Conductivity and capacitance matrices\n*SMAT,MatK,D,IMPORT,MAT,Run_Thermal_MatK\n*SMAT,MatC,D,IMPORT,MAT,Run_Thermal_MatC\n\n! RHS vector\n*DMAT,VecF_real,D,IMPORT,MAT,Run_Thermal_VecF\t! VecF is real\n*DMAT,VecF,Z,COPY,VecF_real\t\t! but it must be used as complex valued\n\n! Input mapping matrice\/ renumbering vector\n*SMAT,Nod2Bcs,D,IMPORT,FULL,strcat(GenerationJobname,'.full'),NOD2BCS\n*VEC,MapForward,I,IMPORT,FULL,strcat(GenerationJobname,'.full'),FORWARD\n\n! Allocation for the solution vector (XBCs), same size as forcing vector\n*DMAT,XBcs,Z,COPY,VecF \n\n! Allocate matrices to separately store real and imaginary part of solution for nodes at keypoints\n*dim,TsolR,array,F_nb_steps,NbOutputNodes\n*dim,TsolI,array,F_nb_steps,NbOutputNodes\n\n! Allocate matrices to separately store real and imaginary part of solution for ALL nodes on the model \n! Prepare component containing nodes without prescribed Boundary conditions, this will set the length of the solution vector\ncmsel,s,MyNodeComponent\n*get,Nb_Nd_Res,NODE,0,COUNT\n\n*dim,TsolMatR,array,F_nb_steps,Nb_Nd_Res\n*dim,TsolMatI,array,F_nb_steps,Nb_Nd_Res<\/code><\/pre>\n\n\n\n<p>Now we are all set and we can begin solving the problem. For each frequency, we build a complex valued matrix (MatA) that needs to be solved. As usual with large numerical problems, we do not invert the matrix but rather we factorize it (using *LSENGINE\/*LSFACTOR) and then use back substitution (using *LSBAC).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>! STEP3: SOLVE\n! Create excitation frequency table: even spacing in logarithmic sense\n*dim,F_table,array,F_nb_steps\n*vfill,F_table,RAMP,log(F_begin),(log(F_end)-log(F_begin))\/(F_nb_steps-1)\n*VFUN, F_table, EXP, F_table\n\n*DO,ind_F,1,F_nb_steps\t\t\t! LOOP OVER FREQUENCY VALUES\n  curr_F=F_table(ind_F)\t\t\t! frequency &#91;cpd]\n  w=(2*3.14159)*curr_F\/86400\t\t! pulsation &#91;rad\/s]\n\n  ! FORM THE COMPLEX SYSTEM  -> A =K+jw*C\n  *SMAT,MatA,Z,COPY,MatC\t! MatA=MatC\n  *AXPY,1.,0.,MatK,0.,w,MatA\t! MatA=(1xMatK)+jw*MatA\n\n  ! FACTORIZE MATRIX A\n  *LSENGINE,BCS,MyBcsSolver,MatA\n  *LSFACTOR,MyBcsSolver\n\n  ! SOLVE THE LINEAR SYSTEM, PUT RESULT INTO VECTOR TBCS\n  *LSBAC,MyBcsSolver,VecF,TBcs  \n  \n  ! SEPARATE REAL AND IMAGINARY PART OF SOLUTION VECTOR\n  *vec,TBcsR,D,COPY,TBcs,REAL\n  *vec,TBcsI,D,COPY,TBcs,IMAG\n\t\n  ! TRANSFER TO USER ORDERING\n  *MULT,Nod2Bcs,TRAN,TBcsR,,TintR\n  *MULT,Nod2Bcs,TRAN,TBcsI,,TintI\n  \n  ! Store complete solution\n  cmsel,s,MyNodeComponent\n  curr_node=0\n  *do,ind_node,1,nb_nd_res\n\tcurr_node=ndnext(curr_node)\n\tTsolMatR(ind_F,ind_node)=TintR(MapForward(curr_node))\n\tTsolMatI(ind_F,ind_node)=TintI(MapForward(curr_node))\n  *enddo\n  \n  ! Store solution at key locations\n  *do,ind_node,1,NbOutputNodes\n    Local_index=MapForward(ListOutputNodes(ind_node))\n    TsolR(ind_F,ind_node)=TintR(Local_index)\n    TsolI(ind_F,ind_node)=TintI(Local_index)\n  *enddo\n*ENDDO<\/code><\/pre>\n\n\n\n<p>Note that for the sake of readability, the code is extremely crude, and performance is limited by loop need to store the complete solution. This step becomes significant for large models (&gt;10<sup>5<\/sup>DOFs) and could be speeded up by usage of the *VGET \/ *VPUT commands (and guess what, this was already covered here: <a href=\"http:\/\/www.padtinc.com\/blog\/the-focus\/changing-results-values-in-ansys-mechanical-apdl-dnsol-and-vput\"><u>http:\/\/www.padtinc.com\/blog\/the-focus\/changing-results-values-in-ansys-mechanical-apdl-dnsol-and-vput<\/u><\/a>)<\/p>\n\n\n\n<p>Lastly, here is a code snippet to arrange the complex temperature vectors into a single matrix that is suitable to use with *VWRITE. What is special about it is that it automatically adjusts the format field to the number of output nodes, using the old command file trick. It has nothing particularly difficult to write, but still it took me a few attempts to achieve. I don\u2019t know about you, but there must be something about *VWRITE formats, and \u201cI keep forgetting where it is\u201d (<em>Depardieu sait o\u00f9, <\/em>for those of you that are French connoisseurs). Going back to *VWRITE command and formats, probably I should consider buying another copy of PADT\u2019s \u201cIntroduction to the ANSYS Parametric Design Language\u201d so that I have one spare.<\/p>\n\n\n\n<p>Enough nonsense, here is the code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>! CREATE A GLOBAL MATRIX CONTAINING REAL AND IMAGINARY PARTS OF SOLUTION\n*dim,TsolC,array,F_nb_steps,1+2*NbOutputNodes\n\n*do,ind_f,1,F_nb_steps\n\tTsolC(ind_f,1)=F_table(ind_f)\n*enddo\n\n*do,ind_node,1,NbOutputNodes\n\tind_r=2+2*(ind_node-1)\n\tind_i=ind_r+1\n\t*do,ind_f,1,F_nb_steps\n\t\tTsolC(ind_f,ind_r)=TsolR(ind_f,ind_node)\n\t\tTsolC(ind_f,ind_i)=TsolI(ind_f,ind_node)\n\t*enddo\n*enddo\n\n*cfopen,command_file,inp\n*vwrite,ExcType,NbOutputNodes\n*mwrite,TsolC(1,1),Run_FRF_ExcType=%c_NbNd=%i,txt\n*vwrite,'(',1+2*NbOutputNodes\n%c F8.2,X,%i(F12.8))\n*cfclose\n\n\/inpu,command_file,inp\n\/sys,del command_file,inp<\/code><\/pre>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Some concrete application wouldn\u2019t hurt, would it?<\/strong><\/h2>\n\n\n\n<p>Now that we have a new tool, we would like to toy around with it (and don\u2019t even try denying it, if you have continued to read until this point, I know you do).<\/p>\n\n\n\n<div class=\"wp-block-media-text alignwide is-stacked-on-mobile\" style=\"grid-template-columns:34% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"631\" height=\"781\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png\" alt=\"\" class=\"wp-image-226\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png 631w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout-242x300.png 242w\" sizes=\"auto, (max-width: 631px) 100vw, 631px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p>As an example, let\u2019s consider the optical reference cavity depicted here. It is taken from reference [2], and basically aimed for IR interferometry. In terms of a thermal system, it is a \u201cbox in a box in a box\u201d. The first one (blue colored) is the optical cavity, which we aim at keeping unaffected by the inevitable temperature fluctuations of this cruel world. It is contained in a second box (a thermal shield, copper colored), which itself is contained in a third box (the vacuum chamber, gray colored).<\/p>\n<\/div><\/div>\n\n\n\n<p>Now to introduce it\u2019s usage: Let\u2019s say it is an enclosure with highly reflective boundaries (mirrors \u201cM\u201d) onto which photons will bounce back and forth a great number of times, until only particular wavelengths subsist (the ones for which the return flight corresponds to a half integer multiple of the cavity length). This very regular phenomenon is used to narrow down the bandwidth of laser sources, and the beauty of it is that there are little intrinsic limits to the stabilization performance, except one: thermal drifts. Actually, in the realm of physics, optical sources with 10<sup>-14<\/sup>&nbsp;to 10<sup>-16 <\/sup>stability rates (i.e. strain rate of 10<sup>-14<\/sup>&nbsp;to 10<sup>-16<\/sup>&nbsp;s<sup>-1<\/sup>) are not uncommon. Provided that the spacer (V) is made of state of the art material like Zerodur (Coefficient of Thermal Expansion of about 10<sup>-8<\/sup>\/deg), we are looking at thermal stabilities of the order of 10<sup>-6<\/sup>&nbsp;to 10<sup>-8<\/sup>degC\/s. One micro degC is surely not a common engineering unit but in our case, it becomes the allowable value!<\/p>\n\n\n\n<p>Every effort was made to limit heat propagation from the exterior to the interior of the system, using low conductivity mechanical supports and radiation shielding. But, how do we know that our fine-looking thermal enclosure is appropriate to reach say a 1\u00b5degC\/s or even 0.01degC\/s stability?<\/p>\n\n\n\n<p>First, we build the model just like for any other regular thermal analysis.<\/p>\n\n\n\n<p>Note that, for cases like this one where radiation needs to be accounted for, then only the radiation matrix (aka \/AUX12) method can be used (see here for details <a href=\"https:\/\/www.padtinc.com\/blog\/wp-content\/uploads\/oldblog\/PADT_TheFocus_53.pdf\"><u>https:\/\/www.padtinc.com\/blog\/wp-content\/uploads\/oldblog\/PADT_TheFocus_53.pdf<\/u><\/a>&nbsp;). Also, be aware that during the generation of the capacitance matrix, a dummy radiation superelement (MATRIX51) with near-zero terms must be used (most simply by specifying a tiny value for the Stefan Boltzmann constant, as input via the STEF command).<\/p>\n\n\n\n<p>Also, in perspective of easier interpretation of results, we introduce 3 additional (\u201cmaster\u201d) nodes, at key locations (spacer, upper and lower mirrors). Their temperature is calculated by arithmetically averaging the temperature at selected sets of nodes. This is done by using Coupling Equations (CE command) generated using a *DO loop. Basically, we wish that the following relationship is respected:<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-1452596f233c5538e68a232229eefa11_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#48;&#61;&#78;&#111;&#100;&#97;&#108;&#84;&#101;&#109;&#112;&#101;&#114;&#97;&#116;&#117;&#114;&#101;&#79;&#102;&#77;&#97;&#115;&#116;&#101;&#114;&#78;&#111;&#100;&#101;&#45;&#92;&#100;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#78;&#125;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#61;&#49;&#125;&#94;&#78;&#32;&#78;&#111;&#100;&#97;&#108;&#84;&#101;&#109;&#112;&#101;&#114;&#97;&#116;&#117;&#114;&#101;&#79;&#102;&#78;&#111;&#100;&#101;&#115;&#73;&#110;&#83;&#101;&#116;\" title=\"Rendered by QuickLaTeX.com\" height=\"52\" width=\"582\" style=\"vertical-align: -12px;\"\/><\/p>\n\n\n\n<p>By doing this we access the average temperature of subsets of the model. In one sense, this is the thermal equivalent of using the RBE3 command (another NASTRAN command by the way, and yes, more hiss is coming. Have a ball!). A bit of warning here, including many (1000+) nodes in a coupling equation might significantly increase the solver wavefront, and hence peak memory usage, so you might want to reduce the spatial sampling.<\/p>\n\n\n\n<p>Then, to generate conductivity (MatK) and capacitance (MatC) matrices, we run two transient dummy analyses with either conductivity or capacity effects activated. To avoid any possible confusion, we change the file name each time (Run_Thermal_MatK and Run_Thermal_MatC), so that matrices are stored into separate .FULL files. Note that, although excitation is not needed at that point, boundary conditions are already required, hence we set . Then, we add the excitation by enforcing a unit temperature at the outer boundary of the system (where temperature sensors are allowed), while keeping the rest at null temperature, and run a third one step dummy transient analysis (Run_Thermal_VecF).<\/p>\n\n\n\n<p>We exit ANSYS (though it\u2019s not required) and start a new run, beginning with importing the corresponding matrices\/vector. Please note that the FE model is not strictly required anymore, except if display or structural capabilities must be used.<\/p>\n\n\n\n<p>The output window confirming that everything is fine should read as follows.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Import Data From File Run_Thermal_MatK (Format=MAT)\n\n  Import Data From File Run_Thermal_MatC (Format=MAT)\n\n  Import Data From File Run_Thermal_VecF (Format=MAT)\n  Copy the matrix VECF_REAL to the matrix VECF\n\n  Import Data From File Run_Thermal.full (Format=FULL)\n  Import the internal node ordering to boundary condition mapping\n\n  Import Data From File Run_Thermal.full (Format=FULL)\n\nCopy the matrix VECF to the matrix XBCS<\/code><\/pre>\n\n\n\n<p>Then we begin solving for our unknowns (as always with *DO, only the first iteration is shown):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u2026\n*DO LOOP ON PARAMETER= IND_F FROM  1.0000     TO  30.000     BY  1.0000    \n\n PARAMETER CURR_F =    0.1000000000    \n\n PARAMETER W =    0.7272199074E-05\n  Copy the matrix MATC to the matrix MATA\n\n *AXP COMMAND : ADD MATK CONTRIBUTION TO MATA MATRIX\n  MYBCSSOLVER Engine : Use the BCS solver applied to the MATA matrix\n SPARSE MATRIX DIRECT SOLVER.\n   Number of equations =        55891,     Maximum wavefront =    3815\n  Memory allocated for solver =        1802.041 MB\n  Memory required for in-core =         533.459 MB\n  Memory required for out-of-core =     173.765 MB\n\nLaunch the numerical factorization of MYBCSSOLVER \n Sparse solver maximum pivot= 86421.2482 at eqn 20335.                   \n Sparse solver minimum pivot= 0.261744844 at eqn 17740.                  \n Sparse solver minimum pivot in absolute value= 0.261744844 at eqn       \n 17740.                                                                  \n  Solve Using Solver MYBCSSOLVER\n\n  Allocate a &#91;55891]&#91;1] Dense Matrix : TBCS\n  Nrm VECF&#91;0] = 2.944604E+004\n  Nrm TBCS&#91;0] = 2.335645E+002\n  Copy the matrix TBCS to the matrix TBCSR\n  Copy the matrix TBCS to the matrix TBCSI\n  Multiply : NOD2BCS(T) by TBCSR -> TINTR\n  Multiply : NOD2BCS(T) by TBCSI -> TINTI<\/code><\/pre>\n\n\n\n<p>In the present case, using an Intel Xeon CPU E5-1620@3.50GHz processor, the elapsed time for each frequency is about 6s for a 55kDOF problem, so that when 30 frequency points are used, the total run time is about 3 minutes. It is not difficult to see why such an approach is largely more efficient compared to a time domain one (which would probably not solve anyway due to disk space limitations).<\/p>\n\n\n\n<p>Now we might want to have a look at the temperature fields. To do so using the General Postprocessor (POST1), we need to write the results into a thermal (.RTH) file. But, contrary to the Modal Analysis, results here are complex quantities, which are not supported by POST1. Hence, we need to write real and imaginary parts into separate files. We do that by creating (copying) the result file created during the generation pass, changing the job file name, resetting the case point to the beginning (SET\/LCDEF) and appending the results (RAPPND). The corresponding code is given here for the real part of the solution:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/sys,copy RUN_THERMAL.RTH RUN_FRF_THERMAL_REAL.RTH  \n\/filnam,RUN_FRF_THERMAL_REAL,OFF\n! Store into .RTH file\n\/POST1\nset,first\nlcdef,erase\n\n! STORE REAL PART\n*do,ind_F,1,F_nb_steps\n curr_F=F_table(ind_F)\n  ! Store complete solution\n  *do,ind_node,1,nb_nd_res\n\tcurr_node=NodeList(ind_node)\n\tdnsol,curr_node,TEMP,,TsolMatR(ind_F,ind_node)\n   *enddo\n   rappnd,1,curr_F\n*enddo<\/code><\/pre>\n\n\n\n<p>Naturally, one should repeat that same operation for the imaginary part of the solution.<\/p>\n\n\n\n<p>Once we are done, we can enjoy colorful images.<\/p>\n\n\n\n<p>For very slow temperature transients, we expect the temperature to be nearly homogeneous, and in-phase with the excitation. Let\u2019s have a look at the results for a 0.1cpd (10 days period) excitation frequency.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"651\" height=\"500\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Real.png\" alt=\"\" data-id=\"239\" data-full-url=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Real.png\" data-link=\"https:\/\/alma-consulting.eu\/?attachment_id=239\" class=\"wp-image-239\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Real.png 651w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Real-300x230.png 300w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"480\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Imag.png\" alt=\"\" data-id=\"238\" data-full-url=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Imag.png\" data-link=\"https:\/\/alma-consulting.eu\/?attachment_id=238\" class=\"wp-image-238\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Imag.png 625w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_01pd_Imag-300x230.png 300w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Results are indeed consistent with engineering judgment:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Amplitude in the core of the system is about 90% (<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-9703bbb03d888fe3947de85e150e8fd8_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#115;&#113;&#114;&#116;&#123;&#48;&#46;&#56;&#51;&#94;&#50;&#43;&#48;&#46;&#51;&#54;&#94;&#50;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"115\" style=\"vertical-align: -2px;\"\/>) of that applied at the outer boundary<\/li><li>Phase lag is small (<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/alma-consulting.eu\/wp-content\/ql-cache\/quicklatex.com-04a650cfcb1544ef1d024f3394d1c430_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#116;&#104;&#101;&#116;&#97;&#61;&#97;&#116;&#97;&#110;&#40;&#92;&#100;&#102;&#114;&#97;&#99;&#123;&#46;&#51;&#54;&#32;&#125;&#123;&#46;&#56;&#51;&#125;&#41;&#61;&#50;&#51;\" title=\"Rendered by QuickLaTeX.com\" height=\"36\" width=\"150\" style=\"vertical-align: -12px;\"\/>\u00b0)<\/li><\/ul>\n\n\n\n<p>For faster fluctuations, response amplitudes should drop sharply, and this is actually the case.<\/p>\n\n\n\n<p>As an example, for 24 cpd fluctuation (1 hour period), the results are as follows:<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"782\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Real-1024x782.png\" alt=\"\" data-id=\"244\" data-full-url=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Real.png\" data-link=\"https:\/\/alma-consulting.eu\/?attachment_id=244\" class=\"wp-image-244\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Real-1024x782.png 1024w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Real-300x229.png 300w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Real-768x587.png 768w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Real.png 1115w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"786\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Imag-1024x786.png\" alt=\"\" data-id=\"243\" data-full-url=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Imag.png\" data-link=\"https:\/\/alma-consulting.eu\/?attachment_id=243\" class=\"wp-image-243\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Imag-1024x786.png 1024w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Imag-300x230.png 300w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Imag-768x589.png 768w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CTF_24cpd_Imag.png 1110w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>At this frequency, the transfer efficiency is less than 5%, and the graphical method becomes impractical. This is where the text output comes to help. What we need to do is plotting the response amplitude vs frequency. In this example, we plot the temperature of the spacer, the lower and the upper mirrors, the three of them making the optically active part of the system. From this graph, it is apparent that although the three of them are connected, their behavior is not always identical, and that depending on the frequency, various effects dominate (radiation\/diffusion). Actually, the response amplitude on the spacer @24 cpd is slightly below 0.3% of the excitation amplitude!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"420\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/FRF.png\" alt=\"\" class=\"wp-image-246\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/FRF.png 560w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/FRF-300x225.png 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/figure>\n\n\n\n<p>Returning to our original question (\u201chow does temperature fluctuations propagate into the inner cavity\u201d), we see that the answer is both location and frequency dependent. At 24cpd, there is a factor of 10 between response amplitude of the upper mirrors compared to the spacer.<\/p>\n\n\n\n<p>Hence, in case a control system is used, it must take care of the long-period fluctuations (frequencies below 3 cycles per day, i.e. periods longer than 8 hours), but should be restricted to that bandwidth. The shorter temperature fluctuations will be taken care of passively by the inertia of the system, with a reduction factor above 10<sup>3<\/sup>&nbsp;for temperature fluctuations shorter than 1 minute.<\/p>\n\n\n\n<p>Actually, it would even be <em>detrimental<\/em>&nbsp;to attempt controlling fluctuations shorter than 8 hours. This is clearly visible on the phase plot, as seen below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"420\" src=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/FRF_phase.png\" alt=\"\" class=\"wp-image-247\" srcset=\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/FRF_phase.png 560w, https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/FRF_phase-300x225.png 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/figure>\n\n\n\n<p>Starting from 1 cycle per day, the phase response of the various components becomes different. Attempting to stabilize one would result in de-stabilizing the others.<\/p>\n\n\n\n<p>Obviously, the next step is to feed this information into a structural analysis to derive the thermal structural response of the system, but this is left as an exercise to the reader J. I don\u2019t know about you but if you have read this post until here (I have already written 3000+ words) you probably want to call it a day!<\/p>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary: What did we learn this time?<\/strong><strong><\/strong><\/h2>\n\n\n\n<p>What we have seen through this example is the usage of the linear solver commands (*LSENGINE,*LSFAC, *LSBAC) for obtaining frequency responses, which is a working tool for system analysis across many disciplines. We also learned how to dump the results into either ANSYS binary results (.RTH) or ASCII files, and I recommend doing both.<\/p>\n\n\n\n<p>But there are some options for you to discover. In particular when tasks become computationally demanding, it is possible to have fine control over the solver:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>For example, in case where independent excitations are present, there is a possibility to generate multiple RHS vectors, do a single factorization, and only repeat the computationally inexpensive back substitution (much alike the KUSE command). This is particularly useful when trying to determine which heat path is the most prevalent, or when searching for the optimal locations of actuators (always a hot debate).<\/li><li>Additionally, the recently introduced commands *LSDUMP\/*LSRESTORE allows to dump the factorized linear solver system to a binary file, for later usage (to be honest I stumbled onto those while writing this post so I haven\u2019t used them so far). So, once a large system has been factorized, it may be put aside and re-used, which is very convenient when all load cases are not known beforehand.<\/li><\/ul>\n\n\n\n<p>And finally, returning to the conclusion of my first post: the number of APDL Math commands is now 21 in lieu of 18, so keep looking for new possibilities!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>References<\/strong><strong><\/strong><\/h2>\n\n\n\n<p>[1] Brewer, Bryan, McCure and Pearson, \u201cThermal Effects in Dimensional Metrology\u201d, Lawrence Radiation Laboratory, Livermore, California, 1965<\/p>\n\n\n\n<p>[2] M. Casado, \u201cWater stable isotopic composition on the east Antarctic plateau: measurements at low temperature of the vapour composition, utilisation as an atmospheric tracer and implication for paleoclimate studies,\u201d Ph.D. thesis, Paris Saclay (2016).<\/p>\n\n\n\n<p><em>This post<\/em> <em>has been previously published as a white Paper on the ANSYS website in 2019.<\/em> <em>This is the original version.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Where do we want to go from here? In a previous post, I tried (and from the feedback I got, somehow succeeded) to introduce the beauty of developing extensions to the core capabilities of ANSYS by means of APDL Math commands. Now, that was merely an introduction, using but the most simple physics (linear thermal [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[4],"class_list":["post-182","post","type-post","status-publish","format-standard","hentry","category-technical-literature","tag-ansys-apdl-math"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis - Alma Consulting<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\" \/>\n<link rel=\"next\" href=\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis - Alma Consulting\" \/>\n<meta property=\"og:description\" content=\"Where do we want to go from here? In a previous post, I tried (and from the feedback I got, somehow succeeded) to introduce the beauty of developing extensions to the core capabilities of ANSYS by means of APDL Math commands. Now, that was merely an introduction, using but the most simple physics (linear thermal [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"Alma Consulting\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-22T18:24:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-28T11:49:17+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png\" \/>\n<meta name=\"author\" content=\"admin9661\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin9661\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\"},\"author\":{\"name\":\"admin9661\",\"@id\":\"https:\/\/alma-consulting.eu\/#\/schema\/person\/67349dff7b3613d00b9310b853e1544c\"},\"headline\":\"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis\",\"datePublished\":\"2020-09-22T18:24:17+00:00\",\"dateModified\":\"2022-05-28T11:49:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\"},\"wordCount\":3380,\"publisher\":{\"@id\":\"https:\/\/alma-consulting.eu\/#organization\"},\"image\":{\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png\",\"keywords\":[\"ANSYS APDL Math\"],\"articleSection\":[\"Technical Literature\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\",\"url\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\",\"name\":\"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis - Alma Consulting\",\"isPartOf\":{\"@id\":\"https:\/\/alma-consulting.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png\",\"datePublished\":\"2020-09-22T18:24:17+00:00\",\"dateModified\":\"2022-05-28T11:49:17+00:00\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage\",\"url\":\"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png\",\"contentUrl\":\"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/alma-consulting.eu\/#website\",\"url\":\"https:\/\/alma-consulting.eu\/\",\"name\":\"Alma Consulting\",\"description\":\"No limits, except for physics\",\"publisher\":{\"@id\":\"https:\/\/alma-consulting.eu\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/alma-consulting.eu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/alma-consulting.eu\/#organization\",\"name\":\"Alma Consulting\",\"url\":\"https:\/\/alma-consulting.eu\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/alma-consulting.eu\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/06\/LOGO_V1_bis.png\",\"contentUrl\":\"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/06\/LOGO_V1_bis.png\",\"width\":1579,\"height\":447,\"caption\":\"Alma Consulting\"},\"image\":{\"@id\":\"https:\/\/alma-consulting.eu\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/nicolas-jobert\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/alma-consulting.eu\/#\/schema\/person\/67349dff7b3613d00b9310b853e1544c\",\"name\":\"admin9661\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/alma-consulting.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4a042c685169086f29596c15b956a482?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4a042c685169086f29596c15b956a482?s=96&d=mm&r=g\",\"caption\":\"admin9661\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis - Alma Consulting","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/","next":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/2\/","og_locale":"en_US","og_type":"article","og_title":"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis - Alma Consulting","og_description":"Where do we want to go from here? In a previous post, I tried (and from the feedback I got, somehow succeeded) to introduce the beauty of developing extensions to the core capabilities of ANSYS by means of APDL Math commands. Now, that was merely an introduction, using but the most simple physics (linear thermal [&hellip;]","og_url":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/","og_site_name":"Alma Consulting","article_published_time":"2020-09-22T18:24:17+00:00","article_modified_time":"2022-05-28T11:49:17+00:00","og_image":[{"url":"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png","type":"","width":"","height":""}],"author":"admin9661","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin9661","Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#article","isPartOf":{"@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/"},"author":{"name":"admin9661","@id":"https:\/\/alma-consulting.eu\/#\/schema\/person\/67349dff7b3613d00b9310b853e1544c"},"headline":"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis","datePublished":"2020-09-22T18:24:17+00:00","dateModified":"2022-05-28T11:49:17+00:00","mainEntityOfPage":{"@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/"},"wordCount":3380,"publisher":{"@id":"https:\/\/alma-consulting.eu\/#organization"},"image":{"@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage"},"thumbnailUrl":"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png","keywords":["ANSYS APDL Math"],"articleSection":["Technical Literature"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/","url":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/","name":"Working wonders with APDL Math \u2013 Ep 02 : Thermal Harmonic Analysis - Alma Consulting","isPartOf":{"@id":"https:\/\/alma-consulting.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage"},"image":{"@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage"},"thumbnailUrl":"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png","datePublished":"2020-09-22T18:24:17+00:00","dateModified":"2022-05-28T11:49:17+00:00","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/alma-consulting.eu\/index.php\/2020\/09\/22\/working-wonders-with-apdl-math-ep-02-thermal-harmonic-analysis\/#primaryimage","url":"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png","contentUrl":"http:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/09\/CavityLayout.png"},{"@type":"WebSite","@id":"https:\/\/alma-consulting.eu\/#website","url":"https:\/\/alma-consulting.eu\/","name":"Alma Consulting","description":"No limits, except for physics","publisher":{"@id":"https:\/\/alma-consulting.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/alma-consulting.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/alma-consulting.eu\/#organization","name":"Alma Consulting","url":"https:\/\/alma-consulting.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/alma-consulting.eu\/#\/schema\/logo\/image\/","url":"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/06\/LOGO_V1_bis.png","contentUrl":"https:\/\/alma-consulting.eu\/wp-content\/uploads\/2020\/06\/LOGO_V1_bis.png","width":1579,"height":447,"caption":"Alma Consulting"},"image":{"@id":"https:\/\/alma-consulting.eu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/nicolas-jobert\/"]},{"@type":"Person","@id":"https:\/\/alma-consulting.eu\/#\/schema\/person\/67349dff7b3613d00b9310b853e1544c","name":"admin9661","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/alma-consulting.eu\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4a042c685169086f29596c15b956a482?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4a042c685169086f29596c15b956a482?s=96&d=mm&r=g","caption":"admin9661"}}]}},"_links":{"self":[{"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/posts\/182","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/comments?post=182"}],"version-history":[{"count":60,"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/posts\/182\/revisions"}],"predecessor-version":[{"id":380,"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/posts\/182\/revisions\/380"}],"wp:attachment":[{"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/media?parent=182"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/categories?post=182"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alma-consulting.eu\/index.php\/wp-json\/wp\/v2\/tags?post=182"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}