<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The ILNumerics Blog &#187; Jonas</title>
	<atom:link href="https://ilnumerics.net/blog/author/jonas/feed/" rel="self" type="application/rss+xml" />
	<link>https://ilnumerics.net/blog</link>
	<description>The Productivity Machine  &#124;  A fresh attempt for scientific computing  &#124;  http://ilnumerics.net</description>
	<lastBuildDate>Thu, 05 Dec 2024 09:09:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.41</generator>
	<item>
		<title>Visual Studio Debugging with the ILNumerics Array Visualizer: Now free for everyone!</title>
		<link>https://ilnumerics.net/blog/visual-studio-debugging-with-the-ilnumerics-array-visualizer-now-free-for-everyone/</link>
		<comments>https://ilnumerics.net/blog/visual-studio-debugging-with-the-ilnumerics-array-visualizer-now-free-for-everyone/#comments</comments>
		<pubDate>Thu, 26 Nov 2020 21:34:05 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[Interesting/ useless]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=1025</guid>
		<description><![CDATA[<p>When we released the first ILNumerics Array Visualizer back in 2012 we knew that this would become a rather useful extension to every scientists&#8217; toolbelt. And indeed: the Array Visualizer makes developing array based algorithms so much easier! It brings instant insight into all kind of array data during your Visual Studio debug session by showing  your &#8230; <a href="https://ilnumerics.net/blog/visual-studio-debugging-with-the-ilnumerics-array-visualizer-now-free-for-everyone/" class="more-link">Continue reading <span class="screen-reader-text">Visual Studio Debugging with the ILNumerics Array Visualizer: Now free for everyone!</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/visual-studio-debugging-with-the-ilnumerics-array-visualizer-now-free-for-everyone/">Visual Studio Debugging with the ILNumerics Array Visualizer: Now free for everyone!</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>When we released the first ILNumerics Array Visualizer back in 2012 we knew that this would become a rather useful extension to every scientists&#8217; toolbelt. And indeed: the Array Visualizer makes developing array based algorithms so much easier! It brings <strong>instant insight into all kind of array data</strong> during your Visual Studio debug session by showing  your arrays in a number of compelling visual ways. Hence, less time has to be spent on finding and removing bugs. The extension quickly became one of those tools which no developer wants to miss anymore.</p>
<figure id="attachment_1043" style="width: 474px;" class="wp-caption alignnone"><a href="http://ilnumerics.net/blog/wp-content/uploads/2020/11/VS_dark_debug_AVx4_3D_.png"><img class="wp-image-1043 size-large" src="http://ilnumerics.net/blog/wp-content/uploads/2020/11/VS_dark_debug_AVx4_3D_-1024x542.png" alt="ILNumerics Array Visualizer: Debugging in VisualStudio" width="474" height="251" /></a><figcaption class="wp-caption-text">Our Array Visualizer in full effect</figcaption></figure>
<p>From version 5 on, the ILNumerics Array Visualizer has been available not only for C# users (with or without using ILNumerics Array&lt;T&gt;), but also supports programmers working with other popular languages, namely: C/C++, FORTRAN, F#, and VisualBasic. It visualizes nearly everything you have a reference for, including ILNumerics arrays, .NET arrays, plain pointers and memory addresses (.NET or C/ C++), and even FORTRAN arrays!</p>
<p>Because its features were so compelling we expected other companies to adopt this idea and offer similar tools. <strong>But in fact, as of today, we are not aware of any comparable visualizer extension on the market.</strong></p>
<p>The Array Visualizer is aligned with our mission to support the creation of technical applications in industrial contexts. However, the core advantage of ILNumerics has always been the ability to create demanding numerical algorithms in Matlab and numpy style faster and directly in .NET &#8211; and to reach a higher level of performance during execution.</p>
<p><strong>We focus on that goal and decided to release the Array Visualizer to the community. For free. </strong>We will continue maintaining and improving the Array Visualizer in the future. This may include to distribute it as a stand alone tool &#8211; outside of the ILNumerics distribution package.</p>
<p><strong>For now, you can add the Array Visualizer extension to your machine <span style="text-decoration: underline;">for free</span> by using our online shop. </strong></p>
<ol>
<li>Register for an account: <a href="https://ilnumerics.net/account.html">https://ilnumerics.net/account.html</a></li>
<li>Sign-in to your account and visit our online shop.</li>
<li>Add a [New Seat]. The new seat opens for configuration. Here, you may add any ILNumerics modules needed. Note that the &#8216;Visual Studio Tools&#8217; module is already selected (price: 0,00 EUR). The Array Visualizer is included here:<img class="alignnone wp-image-1032 size-full" src="http://ilnumerics.net/blog/wp-content/uploads/2020/11/2020-11-26-20_06_31-ILNumerics-Account.png" alt="2020-11-26 20_06_31-ILNumerics Account" width="922" height="752" /></li>
<li>Complete your order. If you haven&#8217;t selected any other modules besides the Visual Studio Tools item, your price will still be 0,00 EUR and no payment will be necessary (no credit card either).</li>
<li>After finishing your order you will receive your invoice by email. The invoice contains your license key.<img class="alignnone wp-image-1033 size-large" src="http://ilnumerics.net/blog/wp-content/uploads/2020/11/2020-11-26-20_15_10-ILNumerics-Billing-1024x390.png" alt="2020-11-26 20_15_10-ILNumerics Billing" width="474" height="181" /></li>
<li>If you haven&#8217;t done yet: download ILNumerics. You will find the latest distribution in your account in the [Downloads] tab. Install the package on your machine.</li>
<li>Activate your seat. This can be done right within the Visual Studio options dialog, in the ILNumerics -&gt; Licenses tab.  Further details on activation: <a href="https://ilnumerics.net/license-activation.html">https://ilnumerics.net/license-activation.html</a></li>
</ol>
<p>That&#8217;s it! You are now ready to start visualizing the heck out of your memory! Start here: <a href="https://ilnumerics.net/visualstudio-extension.html">https://ilnumerics.net/visualstudio-extension.html</a></p>
<p>Oh, and please don&#8217;t forget to send us some screenshots of your Visual Studio debugging sessions with the ILNumerics Array Visualizer. We&#8217;ll make a movie out of them and enjoy them during our next team meetup on a huge screen with chips and beer!</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/visual-studio-debugging-with-the-ilnumerics-array-visualizer-now-free-for-everyone/">Visual Studio Debugging with the ILNumerics Array Visualizer: Now free for everyone!</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/visual-studio-debugging-with-the-ilnumerics-array-visualizer-now-free-for-everyone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why MINT-students should learn C# instead of Matlab and R</title>
		<link>https://ilnumerics.net/blog/why-mint-students-should-learn-c-instead-of-matlab-and-r/</link>
		<comments>https://ilnumerics.net/blog/why-mint-students-should-learn-c-instead-of-matlab-and-r/#comments</comments>
		<pubDate>Sat, 30 May 2020 10:20:48 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Matlab]]></category>
		<category><![CDATA[Numerical Algorithms]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Scientific Computing]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=1017</guid>
		<description><![CDATA[<p>For students who want to prototype and code, there’s a wide range of domain specific programming languages around: R or Matlab – just to name a few – make it quite easy to design new algorithms, analyze data and to plot complex functions. However, bringing innovation from science to enterprise-ready software applications still costs lots &#8230; <a href="https://ilnumerics.net/blog/why-mint-students-should-learn-c-instead-of-matlab-and-r/" class="more-link">Continue reading <span class="screen-reader-text">Why MINT-students should learn C# instead of Matlab and R</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/why-mint-students-should-learn-c-instead-of-matlab-and-r/">Why MINT-students should learn C# instead of Matlab and R</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>For students who want to prototype and code, there’s a wide range of domain specific programming languages around: R or Matlab – just to name a few – make it quite easy to design new algorithms, analyze data and to plot complex functions. However, bringing innovation from science to enterprise-ready software applications still costs lots of effort, manpower and experience.</p>
<p>Microsoft’s C# has the potential to fully close this gap: in combination with the ILNumerics numerical library, it becomes the perfect environment both for prototyping and creating powerful software. But why is it that the mainstream in science still doesn’t make use of the power of C#, .NET and Visual studio? Well, let’s have a closer look at computing in academia.</p>
<h2>Scientific Computing vs. Real-Life Applications</h2>
<p>Like in many other areas in academia, the main reason for sticking to out-of-date techniques is “tradition”. That’s why in 2020 there is still a huge gap between mathematical prototyping and industrial-grade production software. Scientists often aim at creating an algorithm solely in order to validate a new model or theory. Once done, they produce a couple of nice looking plots, publish a paper or two and: bye bye.</p>
<p>Unless&#8230; there is a greater use to it!</p>
<h2>Turning Prototypes into Products</h2>
<p>If a model created in science has the potential to earn serious money,  the algorithm created by a mathematician, physicist or microbiologist has to be transformed into something &#8216;production ready&#8217; that can be used in real life.</p>
<p>This is where many development teams in the biggest enterprises are stuck today: Everytime they want to adapt innovation from science for their own software applications, they have to translate Matlab, numpy or R codes into a modern, managed SW framework. This transformation is where the pain starts: It has to be done! And not only once, but with each update. This causes a whole lot of redundant and boilerplate code &#8211; each and every time. This work is expensive: It requires expert knowledge, extensive testing and additional maintenance. And it significantly delays the time to market!</p>
<h2>C# + ILNumerics: Perfect Match for High Performance Applications</h2>
<p>This pain needs to stop. And this is where modern general purpose languages come into play. C# for example fulfills all the requirements for the design of numerical algorithms! Developer tools such as Visual Studio &#8211; especially if complemented with the ILNumerics Array Visualizer und its highly efficient n-dimensional arrays &#8211; allow scientists and software developers to design and prototype their algorithms by directly using production-ready tools.</p>
<p>That means: the painful and time consuming transformation from domain specific prototyping code to an industrial software product is no longer necessary, which allows for huge time savings – often more than 50 percent!</p>
<h2>Maths, Physics, Engineering: Boost Innovation now!</h2>
<p>However, most established scientists in academia today still stick to Matlab, numpy and R &#8211; even though it’s not necessary anymore. But fortunately, a new generation of scientists has started to push innovation at universities ahead. They are often familiar with modern programming languages like C#, and they want to use their knowledge to combine academic prototyping with state of the art software development. This new generation will modernize the intersections between science and industry. Their skills will allow companies all over the world to realize all their innovative potential in a much shorter period of time.</p>
<p>That’s why we think any science and engineering student should get familiar with modern programming languages as early as possible: It will help him or her to boost innovation in their field all over the world!</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/why-mint-students-should-learn-c-instead-of-matlab-and-r/">Why MINT-students should learn C# instead of Matlab and R</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/why-mint-students-should-learn-c-instead-of-matlab-and-r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ILNumerics for Science &#8211; Computation and Visualization</title>
		<link>https://ilnumerics.net/blog/ilnumerics-for-science-computation-and-visualization/</link>
		<comments>https://ilnumerics.net/blog/ilnumerics-for-science-computation-and-visualization/#comments</comments>
		<pubDate>Mon, 30 Mar 2015 13:42:01 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Scientific Computing]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=882</guid>
		<description><![CDATA[<p>How did you do that? – The Computation Wrapping up our series of ILNumerics and science we take a closer look at computation and science. Easily code your science into a robust, reliable program with high-speed performance. Science of Function Rules Now that we’re 3 posts in this series I have to address something our &#8230; <a href="https://ilnumerics.net/blog/ilnumerics-for-science-computation-and-visualization/" class="more-link">Continue reading <span class="screen-reader-text">ILNumerics for Science &#8211; Computation and Visualization</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-science-computation-and-visualization/">ILNumerics for Science &#8211; Computation and Visualization</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>How did you do that? – The Computation</h2>
<p style="text-align: justify;">Wrapping up our series of ILNumerics and science we take a closer look at computation and science. Easily code your science into a robust, reliable program with high-speed performance.</p>
<p style="text-align: justify;"><span id="more-882"></span></p>
<h3>Science of Function Rules</h3>
<p style="text-align: justify;">Now that we’re 3 posts in this series I have to address something our support team and our development team told me to: Function Rules. These are important for computation in science because they speed things up.</p>
<p style="text-align: justify;">We encourage everybody to follow these rules because it makes your code faster and more readable. If you follow the function rules you give the computation engine more information about the intended use of the arrays you declare. There are four types:</p>
<ol>
<li style="text-align: justify;">Local arrays: They are declared and used only in the function scope. After leaving the function the memory is released and can be reused.</li>
<li style="text-align: justify;">Input arrays: These are the input parameters to a function. They are immutable and should be used only once when copied to a local array.</li>
<li style="text-align: justify;">Output arrays: With this option many different arrays can be returned to the calling function. In the calling function an array must be declared and passed to the called function.</li>
<li style="text-align: justify;">Return arrays: These arrays are the return values of functions. They are erased immediately after usage.</li>
</ol>
<p style="text-align: justify;">What I found most interesting are the output arrays. In the header of the function I can declare a number of output arrays. However, they are optional. When I call this function I don’t need to pass any of these to the function. If an output array is omitted that means that I’m not interested in this particular array. The function will then only calculate the arrays that I’m interested in and omit the rest of the code. This is a powerful tool to save development time and run time &#8211; and gets you back to science quicker.</p>
<h3>Computation Module</h3>
<p style="text-align: justify;">Now, let’s get back to our 2D particle in a box. We still need to add the computation module. This is easily done by right-clicking on your WindowsFormsApplication in the solution explorer and adding the computation module. This will create a class called Computing_Module1 that is derived from ILMath. It comes with a few example functions where you can see some examples of the function rules.</p>
<p>Here is again the code that will calculate the wave function on a grid:</p>
<pre class="brush: csharp; title: ; notranslate">
public static ILRetArray&lt;double&gt; CalcWF(int EVXID, int EVYID, double LX, double LY, int MeshSize)
{
   ILArray&lt;double&gt; X = linspace&lt;double&gt;(0, LX, MeshSize);
   ILArray&lt;double&gt; Y = linspace&lt;double&gt;(0, LY, MeshSize);
   ILArray&lt;double&gt; Y2d = 1;
   ILArray&lt;double&gt; X2d = meshgrid(X, Y, Y2d);
   ILArray&lt;double&gt; Z = sqrt(4.0 / LX / LY) * sin(EVXID * pi * X2d / LX) * sin(EVYID * pi * Y2d / LY);
   return Z.Concat(X2d,2).Concat(Y2d,2);
}
</pre>
<p style="text-align: justify;">I put everything in one function here but will now separate the code into more than one function to show how the function rules should be applied. I’ll keep the CalcWF function and will add two more functions. One function will calculate the meshgrid and the other function will actually calculate the wave function values on the grid.</p>
<pre class="brush: csharp; title: ; notranslate">
public static void getGrid(ILInArray&lt;double&gt; inX, ILInArray&lt;double&gt; inY, ILOutArray&lt;double&gt; outX2d = null, ILOutArray&lt;double&gt; outY2d = null)
{
   using (ILScope.Enter(inX, inY))
   {
      ILArray&lt;double&gt; X = check(inX);
      ILArray&lt;double&gt; Y = check(inY);
      outY2d.a = 1;
      outX2d.a = meshgrid(X, Y, outY2d);
      return;
   }
}
</pre>
<p style="text-align: justify;">This piece of code generates the grid over which the wave function will be calculated. I obeyed all function rules here. Obviously, this is not really necessary for such a small problem but I wanted to show the best practice here. This function basically gives back two arrays, outX2d and outY2d. This is only possible with ILOutArray as functions can only return one object.</p>
<pre class="brush: csharp; title: ; notranslate">
public static ILRetArray&lt;double&gt; getWF(int EVXID, int EVYID, double LX, double LY, ILInArray&lt;double&gt; inX2d, ILInArray&lt;double&gt; inY2d)
{
   using (ILScope.Enter(inX2d, inY2d))
   {
      ILArray&lt;double&gt; X2d = check(inX2d);
      ILArray&lt;double&gt; Y2d = check(inY2d);
      return sqrt(4.0 / LX / LY) * sin(EVXID * pi * X2d / LX) * sin(EVYID * pi * Y2d / LY);
   }
}
</pre>
<p style="text-align: justify;">This function will calculate the values of the wave function on a given grid. Declaring the return value as ILRetArray will make sure that the array that is calculated in the last line will be thrown away after the function is executed.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-science-computation-and-visualization/">ILNumerics for Science &#8211; Computation and Visualization</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/ilnumerics-for-science-computation-and-visualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ILNumerics for Science &#8211; How did you do the Visualization?</title>
		<link>https://ilnumerics.net/blog/ilnumerics-for-scientists-how-did-you-do-the-visualization/</link>
		<comments>https://ilnumerics.net/blog/ilnumerics-for-scientists-how-did-you-do-the-visualization/#comments</comments>
		<pubDate>Mon, 02 Feb 2015 16:35:03 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[3d visualization]]></category>
		<category><![CDATA[plots]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=772</guid>
		<description><![CDATA[<p>In the third part of our series we focus on the visualization of scientific data. You learn how to easily display your data with ILNumerics and the ILPanels. Reactions I got a lot of emails after the last two posts (first, second) of people that liked the post and are interested in learning more. Most &#8230; <a href="https://ilnumerics.net/blog/ilnumerics-for-scientists-how-did-you-do-the-visualization/" class="more-link">Continue reading <span class="screen-reader-text">ILNumerics for Science &#8211; How did you do the Visualization?</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-scientists-how-did-you-do-the-visualization/">ILNumerics for Science &#8211; How did you do the Visualization?</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>In the third part of our series we focus on the visualization of scientific data. You learn how to easily display your data with ILNumerics and the ILPanels.</p>
<p><span id="more-772"></span></p>
<h3>Reactions</h3>
<p style="text-align: justify;">I got a lot of emails after the last two posts (<a title="ILNumerics for Scientists – An easy start" href="http://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/">first</a>, <a title="ILNumerics for Scientists – Going 3D" href="http://ilnumerics.net/blog/ilnumerics-for-scientists/">second</a>) of people that liked the post and are interested in learning more. Most emails asked me to go into more details about how I did all that. Obviously, not too many people are interested in implementing the particle in a box, so the “what” is not as interesting as the “how”.</p>
<p style="text-align: justify;">In this post I want to focus on the visualization part of the previous two examples and how <a href="http://ilnumerics.net">ILNumerics </a>helped me. As many of our users are scientists and engineers they are typically experts in the computation part but appreciate a little help in the visualization. If you&#8217;re interested in the computation part, please be patient until the next post.</p>
<h3>The Form</h3>
<p style="text-align: justify;">I started by creating a new project in Visual Studio and chose Windows Forms Application. This gives me a vanilla Form1.cs. That’s the basis of all the visualization and helps me – being a scientist and not a coder – a lot, because I couldn’t do all that without the help of Visual Studio in the background.</p>
<p style="text-align: justify;">On the left-hand side in the Toolbox panel I picked TableLayoutPanel under Containers and dragged it into Form1.cs.</p>
<p style="text-align: justify;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/02/firstimage.png"><img class="alignnone size-full wp-image-775" src="http://ilnumerics.net/blog/wp-content/uploads/2015/02/firstimage.png" alt="firstimage" width="421" height="379" /></a></p>
<p style="text-align: justify;">I adjusted the table to have three rows and a single column. In the Properties section under Dock I chose Fill so that everything scales when scaling the window later on.</p>
<p style="text-align: justify;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/02/secondimage.png"><img class="alignnone size-full wp-image-777" src="http://ilnumerics.net/blog/wp-content/uploads/2015/02/secondimage.png" alt="secondimage" width="404" height="475" /></a></p>
<p style="text-align: justify;">A right click on Table -&gt; Edit Rows and Columns allows you to change the behavior of the three rows. I wanted the first and last row not to scale when changing the window. This is what I chose here.</p>
<p style="text-align: justify;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/02/thirdimage.png"><img class="alignnone size-full wp-image-779" src="http://ilnumerics.net/blog/wp-content/uploads/2015/02/thirdimage.png" alt="thirdimage" width="730" height="481" /></a></p>
<p style="text-align: justify;">In the middle row we would like to see two ILNumerics panels. So I dragged another TableLayoutPanel in the middle row and chose two columns and one row. Choosing Dock = Fill for the new table and dragging two ILPanels into the respective columns (again with Dock = Fill) gives us the layout for our final Windows Form.</p>
<p style="text-align: justify;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/02/fourthimage.png"><img class="alignnone size-full wp-image-776" src="http://ilnumerics.net/blog/wp-content/uploads/2015/02/fourthimage.png" alt="fourthimage" width="685" height="623" /></a></p>
<p style="text-align: justify;">In the header (the first row) I inserted a FlowLayoutPanel that makes sure that everything in there will be displayed rather neatly. Then I added the labels and the NumericUpDown according to my needs. Please make sure that you go through the properties of every item and choose the values according to your needs. In my case, for instance, the minimum value for the state is 1, since 0 would mean that there is no particle present. Here is the final picture of the form for the 1D particle in a box:</p>
<p><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/02/fifthimage.png"><img class="alignnone size-full wp-image-774" src="http://ilnumerics.net/blog/wp-content/uploads/2015/02/fifthimage.png" alt="fifthimage" width="935" height="660" /></a></p>
<h3>The Wiring</h3>
<p style="text-align: justify;">After having the layout ready the interactivity needs to be implemented. In this case there is only one point of user interaction. The user can choose which eigenvector to display. Double-clicking on the NumericUpDown control opens a new tab with a predefined class and a function handling the event when a user changes the value of the eigenvector.</p>
<p style="text-align: justify;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/02/sixthimage.png"><img class="alignnone size-full wp-image-778" src="http://ilnumerics.net/blog/wp-content/uploads/2015/02/sixthimage.png" alt="sixthimage" width="589" height="477" /></a></p>
<p style="text-align: justify;">All that’s needed now is to implement the function numericUpDown1_ValueChanged. This is particularly simple in our case. We just call the Update function (still to be implemented) with the new value for the eigenvector.</p>
<p style="text-align: justify;">In the case of the 2D particle in a box we have, in fact, four events that should trigger the Update function. This is easily done by introducing these lines of code in the public function Form1():</p>
<pre class="brush: csharp; title: ; notranslate">
     numericUpDown1.ValueChanged += Update;
     numericUpDown2.ValueChanged += Update;
     numericUpDown3.ValueChanged += Update;
     textBox1.TextChanged += Update;
</pre>
<h3 style="text-align: left;">The Implementation</h3>
<p style="text-align: justify;">Now, all we need to do is to implement the Update function and the initialization. The initialization makes sure that all the plotting objects are created when starting the program.</p>
<pre class="brush: csharp; title: ; notranslate">
     public Form1()
     {
        InitializeComponent();

        var EVID = 1;
        var MeshSize = 1000;

        InitializePanel1(EVID, MeshSize);
        InitializePanel2(EVID, MeshSize);

        label2.Text = string.Format(&quot;In appropriate units the energy is {0}&quot;, EVID * EVID);
     }

     private void InitializePanel1(int EVID, int MeshSize)
     {
        ILArray&lt;float&gt; XY = ILMath.tosingle(Computing_Module1.CalcWF(EVID, MeshSize));
        var color = Color.Black;
        ilPanel1.Scene =
          new ILScene {
            new ILPlotCube {
              new ILLinePlot (XY, lineColor : color)
            }
          };
     }
</pre>
<p style="text-align: justify;">The call to Computing_Module1.CalcWF will be explained in the next post. The piece of code above initializes the wave function plot and the density plot in their respective panels with the first eigenvector and a mesh size of 1000.</p>
<p>Finally, the Update function is implemented.</p>
<pre class="brush: csharp; title: ; notranslate">
     private void Update(int EVID, int MeshSize = 1000)
     {
       ILArray&lt;float&gt; XY = ILMath.tosingle(Computing_Module1.CalcWF(EVID, MeshSize));
       ilPanel1.Scene.First&lt;ILLinePlot&gt;().Update(XY);
       ilPanel1.Scene.First&lt;ILPlotCube&gt;().Reset();
       ilPanel1.Refresh();

       ILArray&lt;float&gt; XD = ILMath.tosingle(Computing_Module1.CalcDensity(EVID, MeshSize));
       ilPanel2.Scene.First&lt;ILLinePlot&gt;().Update(XD);
       ilPanel2.Scene.First&lt;ILPlotCube&gt;().Reset();
       ilPanel2.Refresh();
       label2.Text = string.Format(&quot;In appropriate units the energy is {0}&quot;, EVID * EVID);
     }
</pre>
<p style="text-align: justify;">Again, the CalcWF and CalcDensity calls will be explained in the next post. The Reset() function rescales the axes and the Refresh() function finally puts the new plot on screen.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-scientists-how-did-you-do-the-visualization/">ILNumerics for Science &#8211; How did you do the Visualization?</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/ilnumerics-for-scientists-how-did-you-do-the-visualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ILNumerics for Scientists &#8211; Going 3D</title>
		<link>https://ilnumerics.net/blog/ilnumerics-for-scientists/</link>
		<comments>https://ilnumerics.net/blog/ilnumerics-for-scientists/#comments</comments>
		<pubDate>Tue, 20 Jan 2015 15:38:39 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Interesting/ useless]]></category>
		<category><![CDATA[Scientific Computing]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[3d visualization]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[Quantum Mechanics]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=761</guid>
		<description><![CDATA[<p>Recap Last time I started with one of the easiest problems in quantum mechanics: the particle in a box. This time I’ll add 1 dimension and we’ll see a particle in a 2D box. To visualize its wave function and density we need 3D surface plots. 2D Box This time we have a particle that &#8230; <a href="https://ilnumerics.net/blog/ilnumerics-for-scientists/" class="more-link">Continue reading <span class="screen-reader-text">ILNumerics for Scientists &#8211; Going 3D</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-scientists/">ILNumerics for Scientists &#8211; Going 3D</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h3>Recap</h3>
<p style="text-align: justify;"><a title="ILNumerics for Scientists – An easy start" href="http://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/">Last time </a>I started with one of the easiest problems in quantum mechanics: the particle in a box. This time I’ll add 1 dimension and we’ll see a particle in a 2D box. To visualize its wave function and density we need 3D surface plots.</p>
<h3>2D Box</h3>
<p style="text-align: justify;">This time we have a particle that is confined in a 2D box. The potential within the box is zero and outside the box infinity. Again the solution is well-known and can be found on <a href="https://en.wikipedia.org/wiki/Particle_in_a_box">Wikipedia</a>. This time the state of the wave function is determined by two numbers. These are typically called quantum numbers and refer to the X and the Y direction, respectively.</p>
<p style="text-align: justify;">The absolute size of the box doesn’t really matter and we didn’t worry about it in the 1D case. However, the relative size of the length and the width make a difference. The solution to our problem reads</p>
<p style="text-align: center;">$\Psi_{n,k}(x,y) = \sqrt{\frac{4}{L_x L_y}} \cdot \sin(n \cdot \pi \cdot x / L_x) \cdot \sin(k \cdot \pi \cdot y / L_y)$</p>
<h3>The Math</h3>
<p style="text-align: justify;">Very similar to the 1D case I quickly coded the wave function and the density for further plotting. I had to make sure that the arrays are fit for 3D plotting, so the code looks a little bit different compared to last post’s</p>
<pre class="brush: csharp; title: ; notranslate">
     public static ILArray&lt;double&gt; CalcWF(int EVXID, int EVYID, double LX, double LY, int MeshSize)
     {
        ILArray&lt;double&gt; X = linspace&lt;double&gt;(0, LX, MeshSize);
        ILArray&lt;double&gt; Y = linspace&lt;double&gt;(0, LY, MeshSize);

        ILArray&lt;double&gt; Y2d = 1;
        ILArray&lt;double&gt; X2d = meshgrid(X, Y, Y2d);

        ILArray&lt;double&gt; Z = sqrt(4.0 / LX / LY) * sin(EVXID * pi * X2d / LX) * sin(EVYID * pi * Y2d / LY);

        return Z.Concat(X2d,2).Concat(Y2d,2);
     }
</pre>
<p>Again, this took me like 10 minutes and I was done.</p>
<h3>The Visualization</h3>
<p>This time the user can choose the quantum numbers for X and Y direction, the ratio between the length and the width of the box and also the number of mesh points along each axis for plotting. This makes the visualization panel a little bit more involved. Nevertheless, it’s still rather simple and easy to use. This time it took me only 45 minutes – I guess I learned a lot from last time.</p>
<h3>The result</h3>
<p>Here is the result of my little program. You can click and play with it. If you’re interested, you can download the <a href="http://ilnumerics.net/blog/wp-content/uploads/2015/01/Particle2DBox.zip">Particle2DBox</a> source code. Have fun!</p>
<p style="text-align: justify;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/01/Particle2DBox.jpg"><img class="aligncenter wp-image-767 size-full" src="http://ilnumerics.net/blog/wp-content/uploads/2015/01/Particle2DBox.jpg" alt="Particle2DBox" width="928" height="640" /></a>This is a screenshot of the application. I chose the second quantum number along the x axis and the fourth quantum number along the y axis. The box is twice as long in y direction as it is in x direction. The mesh size is 100 in each direction. On the left hand side you see the wave function and on the right hand side the probability density.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-scientists/">ILNumerics for Scientists &#8211; Going 3D</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/ilnumerics-for-scientists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ILNumerics for Scientists &#8211; An easy start</title>
		<link>https://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/</link>
		<comments>https://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/#comments</comments>
		<pubDate>Wed, 07 Jan 2015 16:05:43 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Scientific Computing]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[Quantum Mechanics]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=714</guid>
		<description><![CDATA[<p>Motivation I’ve been working as a scientist at universities for 10 years before deciding to go into industry. The one thing I hated most was coding. At the end of the day coding for scientists is like running for a football player. Obviously, you need it but it’s not what you’re here for. I really &#8230; <a href="https://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/" class="more-link">Continue reading <span class="screen-reader-text">ILNumerics for Scientists &#8211; An easy start</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/">ILNumerics for Scientists &#8211; An easy start</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h3>Motivation</h3>
<p style="text-align: justify;">I’ve been working as a scientist at universities for 10 years before deciding to go into industry. The one thing I hated most was coding. At the end of the day coding for scientists is like running for a football player. Obviously, you need it but it’s not what you’re here for.</p>
<p style="text-align: justify;">I really dreaded the coding and the debugging. So much precious time for something that was so clear on paper and I just wanted the solution of my equations to see whether my idea made sense or not. More often than not scientists find that their idea was not so great and now they had spent so much time coding just to find out that the idea didn’t work.<span id="more-714"></span></p>
<p style="text-align: justify;">To make things worse even in the case that the idea was good the code was typically in a scripted language like Python or Matlab and now needed to be rewritten in Fortran or C++. Isn’t there a better way of doing things? Isn’t there a way where the idea creation and the formulation is the bottle neck and not the coding? I could’ve spent so much more time on valuable thinking instead of senseless coding.</p>
<p style="text-align: justify;">Now, obviously, I’m going to tell you how ILNumerics does exactly that. And, obviously, I do that because I work for them. Still, this is my experience and this is how easy it was. And at the end of the day, you’re not going to buy our product because of this blog post, rather because you downloaded our <a href="http://ilnumerics.net/download.html">free trial</a> and convinced yourself.</p>
<h3 style="text-align: justify;">The Problem</h3>
<p style="text-align: justify;">Let’s start with one of the simplest problems in quantum mechanics – the particle in a box. This is a quantum mechanical particle in a potential-free box with an infinite potential outside the box. In other words, the particle is forced to stay within the box. Anybody unfamiliar with this problem can read the <a href="https://en.wikipedia.org/wiki/Particle_in_a_box">Wikipedia article </a>about this.</p>
<p style="text-align: justify;">The solution to this problem is well-known and can be found analytically. As always in quantum mechanics, the solution is quantized with infinitely many solutions – also known as states. Each of the solutions consists of a wave function associated with a corresponding energy.</p>
<p style="text-align: center;">$\Psi_n(x) = \sqrt{\frac{2}{L}} \sin(n \cdot \pi \cdot  x)$</p>
<p style="text-align: justify;">In the equation above $n$ designates the $n^{th}$ state and $L$ is the length of the box, set to 1 in our case.</p>
<h3 style="text-align: justify;">The Goal</h3>
<p style="text-align: justify;">My goal is to display the wave function and the probability density of a user-chosen state. I choose a simple problem and a simple goal because I’m just getting started. Obviously, this is not one of the problems I faced as a scientist in my earlier life, but it is a nice example.</p>
<h3 style="text-align: justify;">The Solution</h3>
<p style="text-align: justify;">Let’s start with the mathematical part. First I implemented the wave function for a given state. As the wave function is supposed to be plotted it is discretized over a mesh. Here is my body of my function:</p>
<pre class="brush: csharp; title: ; notranslate">
     ILArray&lt;double&gt; X = linspace&lt;double&gt;(0,1,MeshSize);
     ILArray&lt;double&gt; Y = sqrt(2.0)*sin(EVID*pi*X);
     return vertcat(X,Y);
</pre>
<p style="text-align: justify;">The parameter EVID is the eigenvector ID, i.e. an integer greater than 0 to identify which state should be calculated. I coded the same for the density, which basically means squaring the wave function stored in vector Y.</p>
<p>Done in less than 10 minutes!!!</p>
<h3>The Graphs</h3>
<p style="text-align: justify;">The rest is all about the presentation to the user. So I created a simple Windows Form with a numeric up/down counter (to allow the user to choose the state) and two panels for simple line plots. I just needed to wire all the components to make sure that the plots were rescaled and updated after the user changes the state. This took me some more time, because it was the first time for me. Still it took me only 60 minutes and done.</p>
<h3>The Result</h3>
<p style="text-align: justify;">Here you can find the result of my simple little program. You can download the <a href="http://ilnumerics.net/blog/wp-content/uploads/2015/01/ParticleBoxBest.zip" target="_blank">source code</a> and play with it. Have fun!</p>
<p style="text-align: center;"><a href="http://ilnumerics.net/blog/wp-content/uploads/2015/01/ParticleInABox.png"><img class="alignnone wp-image-715 size-full" src="http://ilnumerics.net/blog/wp-content/uploads/2015/01/ParticleInABox.png" alt="ParticleInABox" width="900" height="603" /></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/">ILNumerics for Scientists &#8211; An easy start</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/ilnumerics-for-scientists-an-easy-start/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Troubleshooting: Adding ILNumerics 3D Controls to the VS Toolbox</title>
		<link>https://ilnumerics.net/blog/troubleshooting-adding-controls-to-the-vs-toolbox/</link>
		<comments>https://ilnumerics.net/blog/troubleshooting-adding-controls-to-the-vs-toolbox/#comments</comments>
		<pubDate>Thu, 05 Dec 2013 18:30:27 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Math Library]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=482</guid>
		<description><![CDATA[<p>Adding ILNumerics visualizations to Visual Studio based projects has become a quite convenient task: It&#8217;s easy to use the ILNumerics math library for own projects in .NET. However, from time to time users have problems adding the ILNumerics controls to their Visual Studio Toolbox window. Update: Since ILNumerics Ultimate VS version 4 this issue has &#8230; <a href="https://ilnumerics.net/blog/troubleshooting-adding-controls-to-the-vs-toolbox/" class="more-link">Continue reading <span class="screen-reader-text">Troubleshooting: Adding ILNumerics 3D Controls to the VS Toolbox</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/troubleshooting-adding-controls-to-the-vs-toolbox/">Troubleshooting: Adding ILNumerics 3D Controls to the VS Toolbox</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><strong>Adding ILNumerics visualizations to Visual Studio based projects has become a quite convenient task: It&#8217;s easy to use the ILNumerics math library for own projects in .NET. However, from time to time users have problems adding the ILNumerics controls to their Visual Studio Toolbox window.</strong></p>
<p><em>Update: Since ILNumerics Ultimate VS version 4 this issue has been solved once for all. Simply install the MSI installer and find the ILNumerics ILPanel in the toolbox for all applicable situations.</em></p>
<p>That&#8217;s what a <a href="http://stackoverflow.com/questions/18239021/ilnumerics-how-to-get-ilnumerics-controls-in-windows-form-tools" target="_blank">post on Stack Overflow</a> from earlier this year was about: A developer who wanted to use our<a href="http://ilnumerics.net"> C# math library</a> for 3d visualizations and simulations wasn&#8217;t able to access the ILNumerics controls. &#8220;How can I locate it?&#8221;, he was wondering. &#8220;Do I have to make some changes to my VS?&#8221;</p>
<h2>Adding ILNumerics Controls to the Visual Studio Toolbox manually</h2>
<p>If the ILNumerics Ultimate VS math library is installed on a system, normally the ILNumerics controls are automatically listed in the Visual Studio toolbox on all supported versions of Visual Studio. However, if that&#8217;s not the case there&#8217;s a way to a add them manually: After clicking right onto the toolbox, you can select &#8220;Choose Item&#8221;. The dialog allows you to select the assambly to load the controls from – that&#8217;s it! You will find the ILNumerics.dll in the installation folder on your system. By default this directory is located at:  &#8220;C:\Program Files (x86)\ILNumerics\ILNumerics Ultimate VS\bin\ILNumerics.dll&#8221;.</p>
<p>However, if that doesn&#8217;t work straightaway, it often helps to clear the toolbox from any copies of custom controls before – simply right-click it and choose &#8220;Reset Toolbox&#8221;.</p>
<h2>Need help? ILNumerics Documentation and Support</h2>
<p><strong>You want to know more about our math library and its installation? Check out our <a href="http://ilnumerics.net/docs.html" target="_blank">documentation</a> and the <a title="Getting Started" href="http://ilnumerics.net/Getting-Started-with-ILNumerics.html" target="_blank">Quick Start Guide</a>! If you have any technical questions, have a look at our <a href="http://ilnumerics.net/support.html" target="_blank">Support Section</a>.</strong></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/troubleshooting-adding-controls-to-the-vs-toolbox/">Troubleshooting: Adding ILNumerics 3D Controls to the VS Toolbox</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/troubleshooting-adding-controls-to-the-vs-toolbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using LAPACK in C#/.NET: Linear Equotation Systems in ILNumerics</title>
		<link>https://ilnumerics.net/blog/using-lapack-in-c-net-linear-equotation-systems-in-ilnumerics/</link>
		<comments>https://ilnumerics.net/blog/using-lapack-in-c-net-linear-equotation-systems-in-ilnumerics/#comments</comments>
		<pubDate>Wed, 27 Nov 2013 12:29:17 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[Interesting/ useless]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=490</guid>
		<description><![CDATA[<p>If you install a math library to your .NET/C# project, LAPACK will be probably one of the key feature you expect from that: The routines provided by LAPACK (which actually means: &#8220;Linear Algebra Package&#8221;) cover a wide range of functionalities needed for nearly any numerical algorithm, in natural sciences, computer science, and social science. The &#8230; <a href="https://ilnumerics.net/blog/using-lapack-in-c-net-linear-equotation-systems-in-ilnumerics/" class="more-link">Continue reading <span class="screen-reader-text">Using LAPACK in C#/.NET: Linear Equotation Systems in ILNumerics</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/using-lapack-in-c-net-linear-equotation-systems-in-ilnumerics/">Using LAPACK in C#/.NET: Linear Equotation Systems in ILNumerics</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><strong>If you install a math library to your .NET/C# project, LAPACK will be probably one of the key feature you expect from that: The routines provided by LAPACK (which actually means: &#8220;Linear Algebra Package&#8221;) cover a wide range of functionalities needed for nearly any numerical algorithm, in natural sciences, computer science, and social science.</strong></p>
<p>The LAPACK software library is written in FORTRAN code – until 2008 it was even written in FORTRAN 77. That&#8217;s why adding LAPACK functions to an enterprise software project written in Java or C#/.NET can be quite a demanding task: The implementation of native modules often causes problems regarding maintainability and steadiness of enterprise applications.</p>
<h2>Our LAPACK implementation for C#/.NET</h2>
<p>ILNumerics offers a convenient implementation of <a href="http://ilnumerics.net/specifications.html">LAPACK for C# and .NET</a>: It provides software developers both the execution speed of highly optimized processor specific native code and the convenience of managed software frameworks. That allows our users to create powerful applications in a very short time.</p>
<p>For linear algebra functions ILNumerics uses the processor-optimized LAPACK library by the MIT and Intel&#8217;s MKL. <code>ILMath.Lapack</code> is a concrete interface wrapper class that provides the native LAPACK functions. The LAPACK wrapper is initialized when a call to any static method of <code>ILMath</code> is made. Once the corresponding binaries for your actual architecture have been found, consecutive calls will utilize them in a very efficient way.</p>
<p>The MKL is utilized (and needed) for all calls to any fft(A) function, for matrix decompositions (like for example linsolve, rank, svd, qr etc.). The only exception to that is ILMath.multiply &#8211; the general matrix multiplication. Matrix multiplication is just such an often needed feature, a math library simply could not go without. So we decided to implement ILMath.multiply() purely in managed code. The good thing: it is not really far behind the speed of the processor optimized version! If MKL binaries are found at runtime, those will be used, of course. But in the case of their absence, the managed version should work out just fast enough for the very most situations.</p>
<p>In most cases using this kind of .NET/C# LAPACK implementation means: faster results and more stable software applications. Learn more about Linear Equation Systems and other features of ILNumerics in our <a href="http://ilnumerics.net/Linearalgebra.html">Documentation</a>.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/using-lapack-in-c-net-linear-equotation-systems-in-ilnumerics/">Using LAPACK in C#/.NET: Linear Equotation Systems in ILNumerics</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/using-lapack-in-c-net-linear-equotation-systems-in-ilnumerics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# for 3D visualizations and Plotting in .NET</title>
		<link>https://ilnumerics.net/blog/3d-visualization-and-scientific-plotting-for-net/</link>
		<comments>https://ilnumerics.net/blog/3d-visualization-and-scientific-plotting-for-net/#comments</comments>
		<pubDate>Tue, 08 Oct 2013 13:58:27 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ILNumerics]]></category>
		<category><![CDATA[Scientific Computing]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[2d]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[Math Library]]></category>
		<category><![CDATA[scientific computing]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=467</guid>
		<description><![CDATA[<p>2D and 3D Visualizations are an important feature for a wide range of domains: both software developers and scientists often need convenient visualization facilities to create interactive scenes and to make data visible. The ILNumerics math library brings powerful visualization features to C# and .NET: ILView, the ILNumerics Scene Graph API and its plotting engine. &#8230; <a href="https://ilnumerics.net/blog/3d-visualization-and-scientific-plotting-for-net/" class="more-link">Continue reading <span class="screen-reader-text">C# for 3D visualizations and Plotting in .NET</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/3d-visualization-and-scientific-plotting-for-net/">C# for 3D visualizations and Plotting in .NET</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><strong>2D and 3D Visualizations are an important feature for a wide range of domains: both software developers and scientists often need convenient visualization facilities to create interactive scenes and to make data visible. The ILNumerics math library brings powerful visualization features to C# and .NET: ILView, the ILNumerics Scene Graph API and its plotting engine. We&#8217;d like to give an overview over our latest achievements.</strong></p>
<h2>ILView: a simple way to create interactive 3d visualizations</h2>
<p>We have created ILView as an extension to our interactive web component: It allows you to simply try out ILNumerics&#8217; 2d and 3d visualization features by chosing the output format .exe in our visualization examples. But that&#8217;s not all: ILView is also a general REPL for the evaluation of computational expressions using C# language. ILView is Open Source – find it on <a href="https://github.com/ilnumerics/ILView" target="_blank">GitHub</a>!</p>
<figure id="attachment_477" style="width: 500px;" class="wp-caption aligncenter"><a href="http://ilnumerics.net/blog/wp-content/uploads/2013/10/ilview-3d-visualization.png"><img class=" wp-image-477   " title="3D Visualization with ILView" src="http://ilnumerics.net/blog/wp-content/uploads/2013/10/ilview-3d-visualization-1024x551.png" alt="Screenshot of ILView" width="500" /></a><figcaption class="wp-caption-text">Using ILView for interactive 3D Visualization</figcaption></figure>
<h2>ILNumerics Scene Graph: realize complex visualizations in .NET</h2>
<p>The ILNumeric&#8217;s scene graph is the core of ILNumerics&#8217; visualization engine. No matter if you want to create complex interactive <a href="http://ilnumerics.net/Visualization-API.html">3D visualizations</a>, or if you aim at enhancing and re-configuring existing scenes in .NET: The ILNumerics scene graph offers a convenient way to realize stunning graphics with C#. It uses OpenGL, GDI, and it&#8217;s possible to export scenes into vector and pixel graphics.</p>
<figure id="attachment_478" style="width: 400px;" class="wp-caption aligncenter"><a href="http://ilnumerics.net/blog/wp-content/uploads/2013/10/3d-visualization-scene-graph.png"><img class=" wp-image-478  " title="Interactive Visualization, created with ILNumerics Scene Graph" src="http://ilnumerics.net/blog/wp-content/uploads/2013/10/3d-visualization-scene-graph-300x225.png" alt="Screenshot of an interactive 3D scene" width="400" /></a><figcaption class="wp-caption-text">Using C# for 3D visualizations: the ILNumerics Scene Graph</figcaption></figure>
<h2>Scientific Plotting: visualize your data using C#</h2>
<p>With ILNumerics’ visualization capabilities, C# becomes the language of choice for scientists, engineers and developers who need to visualize data: Our <a href="http://ilnumerics.net/plotting-api.html">plotting API</a> and different kinds of plotting types (contour plots, surface plots etc.) make easy work of creating beautiful scientific visualizations.</p>
<figure id="attachment_479" style="width: 400px;" class="wp-caption aligncenter"><a href="http://ilnumerics.net/blog/wp-content/uploads/2013/10/scientific-plotting-net.png"><img class=" wp-image-479 " title="3D Surface Plot, created with ILNumerics" src="http://ilnumerics.net/blog/wp-content/uploads/2013/10/scientific-plotting-net.png" alt="Screenshot of a Surface Plot in ILNumerics" width="400" /></a><figcaption class="wp-caption-text">Scientific Plotting in .NET: A Surface Plot created with ILNumerics</figcaption></figure>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/3d-visualization-and-scientific-plotting-for-net/">C# for 3D visualizations and Plotting in .NET</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/3d-visualization-and-scientific-plotting-for-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Are you afraid of software developers?</title>
		<link>https://ilnumerics.net/blog/are-you-afraid-of-software-developers/</link>
		<comments>https://ilnumerics.net/blog/are-you-afraid-of-software-developers/#comments</comments>
		<pubDate>Wed, 11 Sep 2013 07:27:25 +0000</pubDate>
		<dc:creator><![CDATA[Jonas]]></dc:creator>
				<category><![CDATA[Interesting/ useless]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[berlin]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[managed frameworks]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[start ups]]></category>

		<guid isPermaLink="false">http://ilnumerics.net/blog/?p=441</guid>
		<description><![CDATA[<p>In the 1980s and 1990s software developers had to face a bunch of bad prejudices: They were known to be sociophobic nerds, neglecting their real lifes in favor of hanging in front of the computer for writing code, discussing in hacking newsgroups and eating pizza. Even though we&#8217;re still not living in a society of &#8230; <a href="https://ilnumerics.net/blog/are-you-afraid-of-software-developers/" class="more-link">Continue reading <span class="screen-reader-text">Are you afraid of software developers?</span> <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/are-you-afraid-of-software-developers/">Are you afraid of software developers?</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>In the 1980s and 1990s software developers had to face a bunch of bad prejudices: They were known to be sociophobic nerds, neglecting their real lifes in favor of hanging in front of the computer for writing code, discussing in hacking newsgroups and eating pizza.</p>
<p>Even though we&#8217;re still not living in a society of hackers, geekism has become mainstream. Not only the fact that most people spend a lot of time with their smartphones and computers: nerd culture is more popular than ever. Some weeks ago Luke Maciak wrote <a href="http://www.terminally-incoherent.com/blog/2013/08/05/nerd-portrayal-on-tv/" target="_blank">a nice article on that topic</a>.</p>
<p>The establishment towards nerdism changed, and so did the general attitude towards software developers. In a way, programmers have become role models for the 21st century – not at least because they are an important factor regarding economic growth in the digital age.</p>
<p>However, having visited some events for start ups in Berlin has made us come across a new kind of prejudices towards developers. Most start ups in Berlin are more or less in the tech business: They create games, offer online services or develop facebook apps. Many of them have no CTOs in their teams, though. That&#8217;s why they employ freelancer developers.</p>
<p>Working together with software developers on this early stage of business is challanging for start ups. They often don&#8217;t have much money to spend: that&#8217;s why the wages developers ask for seem to be too high. Start ups want a strong team spirit: that&#8217;s why they don&#8217;t like developers to work from another place than their office.</p>
<p>But the most important problem is: As most founders aren&#8217;t developers theirselves, they don&#8217;t understand what their expensive freelancer is actually doing when he spends his days coding at home. For theis reason, young CEOs often become nervous: As their business depends on software, they feel like being on their developer&#8217;s mercy because he seems to be the only one who is actually able to understand his code.</p>
<p>In most cases we can calm down our fellows: Developers are used to get paid well and work when and where they want to. There&#8217;s also no reason to be afraid that no other developer would find his way into your software&#8217;s code: Modern languages and frameworks like .NET, Java or Ruby make most applications clean and well organized. So even in case you really have to split up with your developer, it won&#8217;t be that hard to find a new one who can continue his or her antecessor&#8217;s work.</p>
<p>In other words: In most cases there&#8217;s no need to be afraid of software developers. It&#8217;s pretty convenient to monitor enterprise software development these days.</p>
<p>However, the following question shows that this kind of convenience hasn&#8217;t arrived everywhere yet: &#8220;Why does scientific computing today still use only technology of the last century?&#8221;, someone claimed on reddit some days ago. This kind of question is the reason we have created ILNumerics: For the first time it brings the convenience and the improved efficiency and maintainence of modern managed languages to the development of numerical algorithms and <a href="http://ilnumerics.net/Visualization-API.html" target="_blank">3d visualizations</a>.</p>
<p>The post <a rel="nofollow" href="https://ilnumerics.net/blog/are-you-afraid-of-software-developers/">Are you afraid of software developers?</a> appeared first on <a rel="nofollow" href="https://ilnumerics.net/blog">The ILNumerics Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://ilnumerics.net/blog/are-you-afraid-of-software-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
