<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Alex: in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100177#M23832</link>
    <description>&lt;P&gt;Alex:&lt;/P&gt;

&lt;P&gt;I have a very old 1973 structural analysis package that I found in Harrison's book.&lt;/P&gt;

&lt;P&gt;The package creates a structures stiffness matrix, quite simple for linear structures. Program is 900 lines long.&lt;/P&gt;

&lt;P&gt;The solver from 73 is essentially Gaussian Elimination and it is ok.&amp;nbsp; We normally use STRAND7 to solve our structural problems, although there are many such programs, all big kludgy and bloated.&amp;nbsp; The Italian guy was using STRAND to look at the beam&amp;nbsp; of interest to us at the moment.&lt;/P&gt;

&lt;P&gt;The first thing we wanted was the modes, so I added FEAST to the end of 73 structures program,&amp;nbsp; and it worked well, although it has taken a while to work out if I set L to the Number of Degrees of Freedom of the matrix I get the exact solution for the max number of modes.&amp;nbsp; You have L as a parameter, which needs to be changed if you want to pass in the right number.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I also wanted to check the results from the '73 program so I pulled out the '73 solver and threw in PARDISO, it was actually quite easy to create the stiffness matrix in the right form for PARDISO.&amp;nbsp; Now I probably have the world's fastest solver tied to the world's fastest Eigen routine and in less than a second I can do what takes a lot longer time with STRAND 7 and I can modify the printout as required -- DRAIN3 on steroids.&lt;/P&gt;

&lt;P&gt;The next problem to solve is the mass distribution - not to hard.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;If I can run the stiffness array A(N,N) into Pardiso and then into the eigensolver and along the way pass in a B(N) matrix and get the solution X(n) directly for the results for the inversion, and send it onto the EIGEN routine without having to fix A in another form -- bloody winner.&lt;/P&gt;

&lt;P&gt;Simple really -- about 400 lines of FORTRAN code without checks.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Just a thought&lt;/P&gt;

&lt;P&gt;John&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 09 Mar 2016 22:03:40 GMT</pubDate>
    <dc:creator>JohnNichols</dc:creator>
    <dc:date>2016-03-09T22:03:40Z</dc:date>
    <item>
      <title>PARDISO and FEAST</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100172#M23827</link>
      <description>&lt;P&gt;The old 73 Harrison Structural Analysis program written in 66 Fortran has now had the solver taken out and PARDISO put in its place.&amp;nbsp; It was an interesting task as I tried to ensure it was all in MODULES.&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;MODULE StructureType
&amp;nbsp;&amp;nbsp;&amp;nbsp; USE SOLVER
&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER, PARAMETER :: dp = selected_real_kind(15, 307)
&amp;nbsp;&amp;nbsp;&amp;nbsp; REAL (KIND=dp) :: g = 9.806, pi = 3.14159265D0
&lt;/PRE&gt;

&lt;P&gt;​So the interesting question is the use of the standard DP constant, if I use it in each module, they conflict when I call the solver module from the structure type module - it is also useful having the g and pi defined. I can fix it by making DP private in SOLVER, but that means if I use solver elsewhere alone, I have to unprivate DP to declare the main program variables - How am I supposed to do it for real?&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MODULE Solver
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTEGER, PRIVATE, PARAMETER :: dp = selected_real_kind(15, 307)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contains

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine linsolve(n, error, nnz, a, ja, ia, b, x)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; implicit none
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include 'mkl_pardiso.fi'
&lt;/PRE&gt;

&lt;P&gt;It is fascinating climbing into someone's old code, Harrison created a GK matrix to hold the data for the inversion routine, quite clever, but not easy to unwind when you want to use PARDISO -&amp;nbsp; took a while to sort out his names for the various arrays -- the book gave some clues, but it took a while.&amp;nbsp; Slowly cleaning up the&amp;nbsp;code -- was it worth it -- I think so as he had excellent notes -- and a good sample problem, although he made some mistakes with his units conversions&amp;nbsp;but it means I have a nice&amp;nbsp;front end for&amp;nbsp;PARDISO -- which is somewhat&amp;nbsp;faster than my normal structures package and a simple text file is nice for small structures models. &amp;nbsp;&lt;/P&gt;

&lt;P&gt;The FEAST is a real treat, it works now from within the program so&amp;nbsp;I get the solution and the modes, should not be hard to do time stepping, but that can wait. The program takes less than 0.5 seconds to solve a simple problem - my issue is all the writing out from the different codes, Pardios is only 0.015 seconds of time.&lt;/P&gt;

&lt;P&gt;STEVE:&amp;nbsp; Can I suggest that if INTEL put PARDISO and FEAST together you would have an excellent routine - not that it is not that hard, but the different methods for storing matrices is a bit of a waste and calling them one after the other is tedious.&lt;/P&gt;

&lt;PRE class="brush:fortran;"&gt;do 567 j=1,mn_6
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do 566 L4 = 1,mn_12
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Results(J) = Results(J) + SATT(I,J,L4)*disp(L4)
566 END do
567 end do&lt;/PRE&gt;

&lt;P&gt;The S matrix (location in XYZ) and the A transpose matrix are set up in SAT to do the final beam resultant forces and moments it is quickest to take the SAT results adn store each one in an 3 D array where I is each beam.&amp;nbsp; I is an outside loop, is there a way to simplify this set of loops or am I stuck with them.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Mar 2016 05:52:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100172#M23827</guid>
      <dc:creator>JohnNichols</dc:creator>
      <dc:date>2016-03-06T05:52:42Z</dc:date>
    </item>
    <item>
      <title>One way is to male a module</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100173#M23828</link>
      <description>&lt;P&gt;One way is to male a module that just has the kinds and constants in it and then USE that in the other modules.&lt;/P&gt;</description>
      <pubDate>Sun, 06 Mar 2016 09:15:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100173#M23828</guid>
      <dc:creator>andrew_4619</dc:creator>
      <dc:date>2016-03-06T09:15:45Z</dc:date>
    </item>
    <item>
      <title>John, feel free to discuss</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100174#M23829</link>
      <description>&lt;P&gt;John, feel free to discuss your suggestion in the MKL forum.&lt;/P&gt;</description>
      <pubDate>Sun, 06 Mar 2016 18:09:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100174#M23829</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2016-03-06T18:09:59Z</dc:date>
    </item>
    <item>
      <title>Quote:andrew_4619 wrote:</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100175#M23830</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;andrew_4619 wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;One way is to male a module that just has the kinds and constants in it and then USE that in the other modules.&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;I was thinking that is the best way - but it means cascaded modules -- life is not perfect - except maybe if you like Lisp&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2016 02:08:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100175#M23830</guid>
      <dc:creator>JohnNichols</dc:creator>
      <dc:date>2016-03-07T02:08:51Z</dc:date>
    </item>
    <item>
      <title>Hi All,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100176#M23831</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;

&lt;P&gt;I am both in Pardiso and Feast but looks like missed something in thread :)&lt;/P&gt;

&lt;P&gt;What do you mean under this:&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;Can I suggest that if INTEL put PARDISO and FEAST together you would have an excellent routine - not that it is not that hard, but the different methods for storing matrices is a bit of a waste and calling them one after the other is tedious.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;Thanks,&lt;/P&gt;

&lt;P&gt;Alex&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Mar 2016 16:18:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100176#M23831</guid>
      <dc:creator>Alexander_K_Intel2</dc:creator>
      <dc:date>2016-03-07T16:18:14Z</dc:date>
    </item>
    <item>
      <title>Alex:</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100177#M23832</link>
      <description>&lt;P&gt;Alex:&lt;/P&gt;

&lt;P&gt;I have a very old 1973 structural analysis package that I found in Harrison's book.&lt;/P&gt;

&lt;P&gt;The package creates a structures stiffness matrix, quite simple for linear structures. Program is 900 lines long.&lt;/P&gt;

&lt;P&gt;The solver from 73 is essentially Gaussian Elimination and it is ok.&amp;nbsp; We normally use STRAND7 to solve our structural problems, although there are many such programs, all big kludgy and bloated.&amp;nbsp; The Italian guy was using STRAND to look at the beam&amp;nbsp; of interest to us at the moment.&lt;/P&gt;

&lt;P&gt;The first thing we wanted was the modes, so I added FEAST to the end of 73 structures program,&amp;nbsp; and it worked well, although it has taken a while to work out if I set L to the Number of Degrees of Freedom of the matrix I get the exact solution for the max number of modes.&amp;nbsp; You have L as a parameter, which needs to be changed if you want to pass in the right number.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I also wanted to check the results from the '73 program so I pulled out the '73 solver and threw in PARDISO, it was actually quite easy to create the stiffness matrix in the right form for PARDISO.&amp;nbsp; Now I probably have the world's fastest solver tied to the world's fastest Eigen routine and in less than a second I can do what takes a lot longer time with STRAND 7 and I can modify the printout as required -- DRAIN3 on steroids.&lt;/P&gt;

&lt;P&gt;The next problem to solve is the mass distribution - not to hard.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;If I can run the stiffness array A(N,N) into Pardiso and then into the eigensolver and along the way pass in a B(N) matrix and get the solution X(n) directly for the results for the inversion, and send it onto the EIGEN routine without having to fix A in another form -- bloody winner.&lt;/P&gt;

&lt;P&gt;Simple really -- about 400 lines of FORTRAN code without checks.&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Just a thought&lt;/P&gt;

&lt;P&gt;John&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 09 Mar 2016 22:03:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-and-FEAST/m-p/1100177#M23832</guid>
      <dc:creator>JohnNichols</dc:creator>
      <dc:date>2016-03-09T22:03:40Z</dc:date>
    </item>
  </channel>
</rss>

