<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://showmicislam.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://showmicislam.com/" rel="alternate" type="text/html" /><updated>2025-04-21T19:25:21+00:00</updated><id>http://showmicislam.com/feed.xml</id><title type="html">Showmic’s Website</title><subtitle>Personal Website</subtitle><author><name>Showmic Islam</name></author><entry><title type="html">Git &amp;amp; GitHub Tutorial</title><link href="http://showmicislam.com/docs/Git-and-GitHub-for-academia/" rel="alternate" type="text/html" title="Git &amp;amp; GitHub Tutorial" /><published>2024-05-08T00:00:00+00:00</published><updated>2024-05-08T00:00:00+00:00</updated><id>http://showmicislam.com/docs/Git-and-GitHub-for-academia</id><content type="html" xml:base="http://showmicislam.com/docs/Git-and-GitHub-for-academia/"><![CDATA[<p>I started using git and GitHub mostly after I started working with <a href="https://osg-htc.org/">OSG</a> and I realized that I should have started using it way before. My aim for this post is to let 
researchers know that even if you are not developing and maintaing a software and you are a <code class="language-plaintext highlighter-rouge">one-man-army</code>, you need to be familiar with git and GitHub.</p>
<h1 id="what-is-git-and-github">What is git and GitHub</h1>
<ul>
  <li><code class="language-plaintext highlighter-rouge">git</code> is a version control software</li>
  <li><code class="language-plaintext highlighter-rouge">GitHub</code> is a platform for hosting and collaborating on code and software projects.</li>
</ul>

<h1 id="why-do-you-need-git">Why do you need git?</h1>
<p>This pictures is a great example why git is required</p>
<figure class="align-center">
  <img src="http://showmicislam.com/docs/assets/images/Phd_comics.jpeg" alt="Why version control and git are useful?" />
  <figcaption>Necessity of using git</figcaption>
</figure>
<p>Keeping track of codes, working and collaborating with colleagues on different projects are the perfect use cases for git.</p>

<h1 id="common-misconceptions">Common Misconceptions</h1>
<ul>
  <li>GitHub is only for the coders</li>
  <li>Git and GitHub are the same thing</li>
  <li>GitHub is meant to be used for public projects
    <ul>
      <li>Private code bases can be hosted on GitHub</li>
    </ul>
  </li>
  <li>You need to learn a lot of coding to get started
    <ul>
      <li>Many things can be done from the GitHub web interface</li>
    </ul>
  </li>
</ul>

<h1 id="useful-git-commands">Useful git commands</h1>
<ul>
  <li>Commands that need to run once/machine
    <ul>
      <li>git config –global user.name <code class="language-plaintext highlighter-rouge">&lt;your username&gt;</code></li>
      <li>git config –global user.email <code class="language-plaintext highlighter-rouge">&lt;your GitHub email&gt;</code></li>
    </ul>
  </li>
  <li>Usual Command cycle
    <ul>
      <li>git clone <code class="language-plaintext highlighter-rouge">&lt;HTTPS/SSH address&gt;</code></li>
      <li>git checkout –b <code class="language-plaintext highlighter-rouge">&lt;branch name&gt;</code></li>
      <li>git add <code class="language-plaintext highlighter-rouge">&lt;file/folders name&gt;</code></li>
      <li>git commit -m <code class="language-plaintext highlighter-rouge">&lt;useful message to identify the changes&gt;</code></li>
      <li>git push origin <span style="color:red">main/master</span></li>
      <li>git checkout <span style="color:red">main/master</span></li>
      <li>git status</li>
      <li>git pull</li>
    </ul>
  </li>
</ul>

<h1 id="how-git-works">How git works?</h1>

<p>I found a video online that helped me understanding how git works. I am including the link to the video here.</p>

<iframe width="560" height="315" src="https://www.youtube.com/embed/e9lnsKot_SQ?si=e9SRJ0OcpUMVxxH6" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>

<p>Alongside this video, software carpentry’s lesson on version control with <a href="https://swcarpentry.github.io/git-novice/">git</a> is also a great resource.</p>
<h2 id="example-scenario">Example Scenario</h2>
<p>I have made an animation to explain the concept better to my students. The scenario is that I have a <strong>GitHub repository</strong> named <a href="https://github.com/showmic09/MECH-892">MECH-892</a>. Those of you who are not familiar with the term repository, you can think of it as a set of files and folders for a project that you are working on and that you want to keep track of those files. Anyways, the purpose for this repository is to teach the concepts of git and GitHub to my students. Now, these set of files &amp; folders exist in GitHub or a remote repository. And I want to make some changes to the files that are stored in the remote repository(in this case GitHub). We can use <code class="language-plaintext highlighter-rouge">GitHub's GUI interface</code> to do the changes but I want to highlight the process where we will be modifying those files from a command line interface which offers a ton of flexibility. Before making any changes to the repository I need to create a copy of the repository. I can do that using the <code class="language-plaintext highlighter-rouge">git clone</code> command. When I do <code class="language-plaintext highlighter-rouge">git clone</code> I get a copy of the remote repository on my machine. For this example, let’s assume the <a href="https://github.com/showmic09/MECH-892">MECH-892</a> repository only has 2 files and folders-<code class="language-plaintext highlighter-rouge">messy_files</code> and <code class="language-plaintext highlighter-rouge">Readme.md</code>. I want to create a folder named <code class="language-plaintext highlighter-rouge">Git_lessons</code> and when I create the folder on my local machine inside the <code class="language-plaintext highlighter-rouge">MECH-892</code> folder, git knows that new files/folders have been created but it doesn’t automatically add the created files and folders to the repository. To add the newly created folder to the repository, <code class="language-plaintext highlighter-rouge">git add</code> command is used. But <code class="language-plaintext highlighter-rouge">git add</code> doesn’t add the files directly to the local repository. It adds the folder to a intermediate location which is called <code class="language-plaintext highlighter-rouge">staging area</code>. From the <code class="language-plaintext highlighter-rouge">staging area</code> if we want to add the folder to the local repository, we will use <code class="language-plaintext highlighter-rouge">git commit</code> command. All these three things-your <code class="language-plaintext highlighter-rouge">working directory</code>, <code class="language-plaintext highlighter-rouge">staging area</code> and <code class="language-plaintext highlighter-rouge">local repository</code> exists in your local machine. How about if I want to make the changes to my remote repository? Then I need to push out the changes from my local machine to the remote repository. <code class="language-plaintext highlighter-rouge">git push</code> command does exactly that. All of these long texts are explained better in the animation below:</p>
<h3 id="animation-explaining-different-git-commands">Animation explaining different git commands</h3>
<figure class="align-center">
  <img src="http://showmicislam.com/docs/assets/files/how-git-works-slide1.gif" alt="Why version control and git are useful?" />
</figure>

<p>And once the remote repository is updated, then a collaborator can grab the updated content from the repository using <code class="language-plaintext highlighter-rouge">git pull</code>. In this case, I am assuming that the collaborator already had cloned the repo and was working on their own research/computational work. So, they don’t need to clone the <code class="language-plaintext highlighter-rouge">repo</code> again. They will just do a <code class="language-plaintext highlighter-rouge">git pull</code> to get the updated files in their current working directory as shown in the second animation below.</p>

<figure class="align-center">
  <img src="http://showmicislam.com/docs/assets/files/how-git-works-slide2.gif" alt="Why version control and git are useful?" />
</figure>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="GitHub" /><category term="Git" /><category term="Tutorial" /><summary type="html"><![CDATA[I started using git and GitHub mostly after I started working with OSG and I realized that I should have started using it way before. My aim for this post is to let researchers know that even if you are not developing and maintaing a software and you are a one-man-army, you need to be familiar with git and GitHub. What is git and GitHub git is a version control software GitHub is a platform for hosting and collaborating on code and software projects.]]></summary></entry><entry><title type="html">OSG User School 2023</title><link href="http://showmicislam.com/docs/OSG-User-School-2023/" rel="alternate" type="text/html" title="OSG User School 2023" /><published>2023-11-05T00:00:00+00:00</published><updated>2023-11-05T00:00:00+00:00</updated><id>http://showmicislam.com/docs/OSG-User-School-2023</id><content type="html" xml:base="http://showmicislam.com/docs/OSG-User-School-2023/"><![CDATA[<p>This was my second year instructing and helping the participants of OSG User School. We had a great applicant pool this year. OSG organinizes this school every year with a goal of teaching the basics of High through Computing, <code class="language-plaintext highlighter-rouge">HTCondor</code> (The Scheduler program) and running computational jobs on <code class="language-plaintext highlighter-rouge">OSG</code>.</p>

<figure class="align-center">
  <img src="http://showmicislam.com/docs/assets/images/osg_US_2023.jpeg" alt="Participants of the OSG User School 2023" />
  <figcaption>Participants of the OSG User School 2023</figcaption>
</figure>

<h1 id="facts-about-osg-user-school-2023">Facts about OSG User School 2023</h1>
<ul>
  <li>It was the 14th OSG User School</li>
  <li>My thrid OSG user school and second time as an instructor. I was the instructor for two courses- Troubleshooting and Self-Checkpointing</li>
  <li>60 participants in total including 5-6 international participants from <code class="language-plaintext highlighter-rouge">ACE</code> (African Center for Excellence)</li>
</ul>

<h1 id="things-i-enjoyed">Things I enjoyed</h1>
<ul>
  <li>In general I enjoy teaching. This year I got to teach a new course-<code class="language-plaintext highlighter-rouge">self checkpointing</code>. Preparing the slides and exercises for that helped me gain insight on how it can be applied to my own research work</li>
  <li>It’s always a great experience to learn all the great researches. Some of them goes way over my head but every iteraction that I had with the researchers added a new chapter to my knowledge.</li>
  <li>Madison is great in Summer and the Best western Hotel is very nice :blush:</li>
</ul>

<h1 id="interested-future-participants">Interested Future Participants</h1>
<p>Keep an eye on the <a href="https://osg-htc.org/">OSG</a> page. The announcement for the next school happens usually in the spring.</p>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="OSG" /><category term="Conference" /><summary type="html"><![CDATA[This was my second year instructing and helping the participants of OSG User School. We had a great applicant pool this year. OSG organinizes this school every year with a goal of teaching the basics of High through Computing, HTCondor (The Scheduler program) and running computational jobs on OSG.]]></summary></entry><entry><title type="html">ASNT Conference</title><link href="http://showmicislam.com/docs/31st-Research-Symposium-ASNT/" rel="alternate" type="text/html" title="ASNT Conference" /><published>2023-07-05T00:00:00+00:00</published><updated>2023-07-05T00:00:00+00:00</updated><id>http://showmicislam.com/docs/31st-Research-Symposium-ASNT</id><content type="html" xml:base="http://showmicislam.com/docs/31st-Research-Symposium-ASNT/"><![CDATA[<p>This was my first time attending the American Society of Nondestructive Testing (ASNT) conference in person. Last year, I had a presentation related to my dissertation and had received the travel grant too. Unfortunately, I couldn’t attend the conference and my adviser ended up presenting on my behalf. However, this year I got a chance to travel and met with the leaders in the NDE field.</p>

<h1 id="turner-group-at-asnt">Turner group at ASNT</h1>
<p>Trevor and Ramon presented their work on quantifying case carburization depth and detecting <code class="language-plaintext highlighter-rouge">MTR (Micro-textured-regions)</code>. The work was funded by Rolls Royce and Amsted Rail Brenco. Below is the group photo. We got a chance to meet with Andrea, Chris and Yongfeng (former Turner Lab members). Below is the group photo.</p>
<figure class="align-center">
  <img src="http://showmicislam.com/docs/assets/images/ASNT_group_photo.jpg" alt="Turner Lab at ASNT research symposium 2023" />
  <figcaption>Turner Lab at ASNT research symposium 2023</figcaption>
</figure>

<h1 id="interesting-presentations-at-asnt">Interesting Presentations at ASNT</h1>
<p>Almost all the talks that I attended were very good. Some of the extra-ordinary work and plenary talk that I liked are</p>
<ul>
  <li>Work from Mike Lowe’s group</li>
  <li>Air Force Research Laboratory’s work on finding the ground truth in X-ray CT data. It was interesting to know that based on the type of <code class="language-plaintext highlighter-rouge">X-ray CT machine</code>-(resolution, Contrast to Noise Ratio (CNR)) the amount of detected pores were very different. <strong>CNR</strong> was the main important factor in detecting porosity of different depths</li>
  <li>The statistics related presentation of Miss Jennifer Brown made me regret not taking enough statistics courses during my Ph.D.</li>
  <li>The presentation of Bruce Drinkwater on “Are the robots coming?”</li>
</ul>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="ASNT" /><category term="Conference" /><summary type="html"><![CDATA[This was my first time attending the American Society of Nondestructive Testing (ASNT) conference in person. Last year, I had a presentation related to my dissertation and had received the travel grant too. Unfortunately, I couldn’t attend the conference and my adviser ended up presenting on my behalf. However, this year I got a chance to travel and met with the leaders in the NDE field.]]></summary></entry><entry><title type="html">HCC Summer Workshop 2023</title><link href="http://showmicislam.com/docs/HCC-Summer-Workshop-2023/" rel="alternate" type="text/html" title="HCC Summer Workshop 2023" /><published>2023-06-09T00:00:00+00:00</published><updated>2023-06-09T00:00:00+00:00</updated><id>http://showmicislam.com/docs/HCC-Summer-Workshop-2023</id><content type="html" xml:base="http://showmicislam.com/docs/HCC-Summer-Workshop-2023/"><![CDATA[<h1 id="holland-computing-center">Holland Computing Center</h1>
<p>Holland Computing Center <strong>(HCC)</strong> is located at University of Nebraska-Lincoln. It provides computing resources to the affiliates of <code class="language-plaintext highlighter-rouge">University of Nebraska</code> system. Currently, the most advanced cluster that <code class="language-plaintext highlighter-rouge">HCC</code> has is <em>swan</em>. HCC provides <code class="language-plaintext highlighter-rouge">High Performance Computing</code> to its researchers.</p>

<h1 id="june-summer-workshop">June Summer Workshop</h1>
<p>Every year <code class="language-plaintext highlighter-rouge">HCC</code> hosts a workshop in the summer teaching about the basics of <code class="language-plaintext highlighter-rouge">High Performance Computing (HPC)</code>. It is usually in June. This year I got the opportunity to teach at the workshop. The lesson started with an introduction to <code class="language-plaintext highlighter-rouge">Unix Shell</code>. The shell is a program where users can type commands. With the shell, it’s possible to invoke complicated programs. The most popular Unix shell is the <strong>Bash</strong>. Bash is a program that lets the user run different commands from a command line interface <code class="language-plaintext highlighter-rouge">(CLI)</code>. In case of the computing world, most of the clusters are designed to interact from a <strong>CLI</strong>. Learning <code class="language-plaintext highlighter-rouge">Bash</code> or shell commands is very helpful for researchers as it provides users with the tools to do a lot of pre and post processing directly from the <code class="language-plaintext highlighter-rouge">terminal</code> environment.<br /></p>

<h1 id="bash">Bash</h1>
<p>Software carpentry has a great lesson for the <code class="language-plaintext highlighter-rouge">Unix Shell</code>. The workshop followed the <a href="https://swcarpentry.github.io/shell-novice/">software carpentry’s</a> lesson plan. The whole lesson is built in a way that makes it easier for anyone to start from scratch. Whenever I teach <code class="language-plaintext highlighter-rouge">Bash</code> I like to start by providing a background and usefulness for <code class="language-plaintext highlighter-rouge">Bash</code>. When I started using HPC for the first time at <strong>UNL</strong>, I had zero experience of using unix shell or terminal. I started to learn some of the very basic commands. I relied heavily on <a href="https://winscp.net/eng/index.php">WinSCP</a> for editing job submit file, looking through output and error messages, finding empty folders or jobs that failed. When I switched to a mac that pushed me to get better in using Bash. Mac did not have a good substitute of <code class="language-plaintext highlighter-rouge">WinSCP</code>. Cyberduck comes close but is still very far away from the functionalities that WinSCP offer.<br /></p>

<p>I shared all these experiences with the students. I hope my experience and different use cases of <code class="language-plaintext highlighter-rouge">Bash commands</code> in my research will motivate the students.<br /></p>

<h1 id="useful-tips-and-tricks-for-bash">Useful Tips and Tricks for Bash</h1>
<p>Below are some of the commands and tips that I have found very useful for my work.</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">Ctrl</code> + <code class="language-plaintext highlighter-rouge">A</code> moves the cursor to the front of the line in the terminal.</li>
  <li><code class="language-plaintext highlighter-rouge">ls -lthr</code> lets me easily find the last edited file in a directory.</li>
  <li><code class="language-plaintext highlighter-rouge">chmod +x</code> or <code class="language-plaintext highlighter-rouge">chmod 755</code> to make a file executable</li>
  <li>execute the script from terminal using a <code class="language-plaintext highlighter-rouge">./&lt;script_file_name&gt;</code></li>
  <li><code class="language-plaintext highlighter-rouge">$@</code> enables a shell script to accept any number of arguments</li>
</ul>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="HCC" /><category term="Blogs" /><category term="Bash" /><summary type="html"><![CDATA[Holland Computing Center Holland Computing Center (HCC) is located at University of Nebraska-Lincoln. It provides computing resources to the affiliates of University of Nebraska system. Currently, the most advanced cluster that HCC has is swan. HCC provides High Performance Computing to its researchers.]]></summary></entry><entry><title type="html">GPN Annual Meeting 2023</title><link href="http://showmicislam.com/docs/GPN-Annual-Meeting-2023/" rel="alternate" type="text/html" title="GPN Annual Meeting 2023" /><published>2023-06-04T00:00:00+00:00</published><updated>2023-06-04T00:00:00+00:00</updated><id>http://showmicislam.com/docs/GPN-Annual-Meeting-2023</id><content type="html" xml:base="http://showmicislam.com/docs/GPN-Annual-Meeting-2023/"><![CDATA[<p>This was my first time at the Great Plains Network (<a href="https://www.greatplains.net/">GPN</a>) conference. It is a regional conference. The universities in South Dakota, Nebraska, Missouri, Kansas, Oklahoma and Arkansas comprise the GPN. The conference took place in Kansas City from May 31 to June 2nd. I instructed the “Scaling Out Your Research on the Open Science Pool” workshop. The workshop had a great deal of hands on portion. The materials for the workshop can be found <a href="https://docs.google.com/presentation/d/1o0AfBeb65hOEBE1iQLj7pH4V0nB1FiG-/edit#slide=id.p1">here</a>. <a href="https://osg-htc.org">OSG</a> is free for all researchers having an affiliation with an US based non-profit institution. The workshop was designed to help researchers in getting a glance at the capabilities provided by OSG. <br /></p>

<figure class="align-center">
  <img src="http://showmicislam.com/docs/assets/images/GPN-teaching.jpg" alt="GPN event 2023" />
  <figcaption>GPN workshop on using OSPool</figcaption>
</figure>

<p>However, apart from leading the workshop I also got a chance to participate in other workshops and talks. The panel discussion about AI and its ethics was interesting. I came to know about <a href="https://slidesgpt.com/">slidesGPT</a> from there. It generates slides based on the provided information. The API of <code class="language-plaintext highlighter-rouge">ChatGPT</code> is used in such different and innovative ways. One of the panelists was a <code class="language-plaintext highlighter-rouge">lawyer</code>. According to him the upsurge in AI and the available API’s are presenting the startups with a great advantage. The startups now can compete with the well established companies if they can innovate. Previously the costs and overhead of maintaining a company sometimes made it very difficult for startups to compete on the open market. I wish the whole session was recorded. <br /></p>

<p>I learnt the importance of building a regional CI (Cyber infrastructure) network. All the conference that I had attended before was focused on research only. GPN focused on <code class="language-plaintext highlighter-rouge">research computing</code> along with <code class="language-plaintext highlighter-rouge">professional</code> development. It presented me with the opportunity to learn numerous challenges that goes behind the scene of the computing world.</p>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="GPN" /><category term="Conference" /><category term="Blogs" /><summary type="html"><![CDATA[This was my first time at the Great Plains Network (GPN) conference. It is a regional conference. The universities in South Dakota, Nebraska, Missouri, Kansas, Oklahoma and Arkansas comprise the GPN. The conference took place in Kansas City from May 31 to June 2nd. I instructed the “Scaling Out Your Research on the Open Science Pool” workshop. The workshop had a great deal of hands on portion. The materials for the workshop can be found here. OSG is free for all researchers having an affiliation with an US based non-profit institution. The workshop was designed to help researchers in getting a glance at the capabilities provided by OSG.]]></summary></entry><entry><title type="html">Ultrasonic NDE</title><link href="http://showmicislam.com/docs/Ultrasonic-NDE/" rel="alternate" type="text/html" title="Ultrasonic NDE" /><published>2023-05-29T00:00:00+00:00</published><updated>2023-05-29T00:00:00+00:00</updated><id>http://showmicislam.com/docs/Ultrasonic-NDE</id><content type="html" xml:base="http://showmicislam.com/docs/Ultrasonic-NDE/"><![CDATA[<p>Ultrasound refers a sound wave having a frequency of beyond <code class="language-plaintext highlighter-rouge">20000 Hz</code>. Just like normal speech sounds echo is also noticed in case of ultrasound. Using the echo of the ultrasound different information about the body under investigation (materials, ceramics, biomaterials etc) can be obtained. It is one of the most popular non-destructive methods. <br /></p>

<p><code class="language-plaintext highlighter-rouge">Ultrasound</code> is used widely in various industries for detection and identification of <code class="language-plaintext highlighter-rouge">defects</code> in polycrystalline materials. My research interest lies in quantifying polycrystalline materials through ultrasound. Using an ultrasonic transducer ultrasonic signal can be <code class="language-plaintext highlighter-rouge">transmitted and received</code>. When ultrasound travels inside a polycrystalline material it scatters in all direction. From the reflected signal of the wave information about the <code class="language-plaintext highlighter-rouge">microstructure</code> of the material can be quantified. Some of the main properties of ultrasound is <code class="language-plaintext highlighter-rouge">phase velocity</code>, <code class="language-plaintext highlighter-rouge">attenuation</code> and <code class="language-plaintext highlighter-rouge">backscatter</code>. Using these properties of ultrasound the microstructural properties of a material can be predicted. <br /></p>

<p>Ultrasonic wave <code class="language-plaintext highlighter-rouge">scatters</code> when it passes through the grains of polycrystalline materials. <code class="language-plaintext highlighter-rouge">Grain boundaries</code> are the main sources of ultrasonic scattering and attenuation. Ultrasonics theories like Weaver’s model is specially helpful for understanding ultrasonic responses in polycrystalline materials. <a href="https://doi.org/10.1121/1.5096651">Norouzian and Turner</a> developed the modifications necessary to apply ultrasonic theories to calculate <code class="language-plaintext highlighter-rouge">phase velocity</code> and <code class="language-plaintext highlighter-rouge">attenuation</code> using the discrete synthetic microstructures for cubic polycrystalline materials.<br /></p>

<p>My research work aims to further this approach of developing and testing the <code class="language-plaintext highlighter-rouge">ultrasonic theories</code> applicable to discrete <code class="language-plaintext highlighter-rouge">synthetic microstructures</code> for complex polycrystalline materials. The animation in this page is my lazy approach towards describing the ultrasonic properties. However, Iowa State University has built a great website regarding all the <a href="https://www.nde-ed.org/Physics/index.xhtml">NDT techniques</a>. I would highly encourage interested readers to go through different sections in their website.
<img src="http://showmicislam.com/docs/assets/files/Ultrasound_background.gif" alt="DREAM.3D-twin" class="align-center" /></p>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="Ultrasound" /><category term="NDE" /><summary type="html"><![CDATA[Ultrasound refers a sound wave having a frequency of beyond 20000 Hz. Just like normal speech sounds echo is also noticed in case of ultrasound. Using the echo of the ultrasound different information about the body under investigation (materials, ceramics, biomaterials etc) can be obtained. It is one of the most popular non-destructive methods.]]></summary></entry><entry><title type="html">Creating Synthetic Microstructures</title><link href="http://showmicislam.com/docs/Creating-synthetic-microstructures/" rel="alternate" type="text/html" title="Creating Synthetic Microstructures" /><published>2023-05-27T00:00:00+00:00</published><updated>2023-05-27T00:00:00+00:00</updated><id>http://showmicislam.com/docs/Creating-synthetic-microstructures</id><content type="html" xml:base="http://showmicislam.com/docs/Creating-synthetic-microstructures/"><![CDATA[<script src="/js/copyCode.js" defer=""></script>

<p>Microstructure refers to the internal organization of a material. Due to the nature of my research I am focused on investigating polycrystalline materials. Polycrystalline materials refer to those materials that have many <code class="language-plaintext highlighter-rouge">crystals</code> e.g. Copper, Iron, Aluminum etc. If we put these materials under a microscope we can see that they consist of many small elements or building blocks like a jigsaw puzzle which we refer to as grains. <a href="http://dream3d.bluequartz.net/">DREAM.3D</a> and <a href="https://neper.info/">Neper</a> are two of the most prominent software for creation of two and three dimensional synthetic microstructures.<br /></p>

<h1 id="dream3d">DREAM.3D</h1>

<p>DREAM.3D fills up a given space with grains of random shapes and sizes, and allows them to grow in all directions untill no empty <code class="language-plaintext highlighter-rouge">voxels(3D pixels)</code> are remaining.</p>

<p><img src="http://showmicislam.com/docs/assets/images/twin.jpg" alt="DREAM.3D-twin" class="align-center" /></p>

<h2 id="slurm-script-for-dream3d">Slurm script for DREAM.3D</h2>
<p>More information about the inner workings of DREAM.3D can be found in Mike Groeber’s <a href="https://link.springer.com/article/10.1186/2193-9772-3-5">paper</a>. Creation of a relatively realistic synthetic microstructures requires a lot of computing. I usually create the DREAM.3D synthetics in <code class="language-plaintext highlighter-rouge">Holland Computing Center (HCC)</code> Slurm based cluster.
The script to generate many realizations follows:</p>

<div class="code-header">
  <button class="copy-code-button fas fa-copy" aria-label="Copy code to clipboard"></button>
</div>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#!/bin/sh</span>
<span class="c">#SBATCH --array=1-40</span>
<span class="c">#SBATCH --nodes=1</span>
<span class="c">#SBATCH --time=127:00:00</span>
<span class="c">#SBATCH --mem=64G</span>
<span class="c">#SBATCH -o two_phase_30-%A_%a.out --array=1-40</span>

module load singularity
<span class="nb">mkdir</span> /&lt;path&gt;/&lt;to&gt;/&lt;json file&gt;/<span class="nv">$SLURM_ARRAY_TASK_ID</span>
singularity <span class="nb">exec</span> <span class="nt">-B</span> /&lt;path&gt;/&lt;to&gt;/&lt;json file&gt;/<span class="nv">$SLURM_ARRAY_TASK_ID</span>:/mnt docker://unlhcc/dream3d PipelineRunner <span class="nt">-p</span> /&lt;path&gt;/&lt;to&gt;/&lt;json file&gt;/<span class="k">*</span>.json</code></pre></figure>

<p>The GUI of DREAM.3D creates a <code class="language-plaintext highlighter-rouge">.json</code> file and it can be run from the command line using the <code class="language-plaintext highlighter-rouge">PipelineRunner -p</code> command.</p>

<h1 id="neper">Neper</h1>

<p>Neper is based on <code class="language-plaintext highlighter-rouge">Voronoi</code> tessellation. Neper fills a given space with random <code class="language-plaintext highlighter-rouge">seed</code> points. Neper has the capability to generate microstructures of different grain size distributions. The image below shows a <code class="language-plaintext highlighter-rouge">3D Voronoi polycrystal</code>.</p>

<p><img src="http://showmicislam.com/docs/assets/images/laguerre.png" alt="Neper-Voronoi" class="align-center" /></p>

<h2 id="slurm-script-for-voronoi-tessellation">Slurm script for Voronoi tessellation</h2>
<p>As our codebase is for <code class="language-plaintext highlighter-rouge">voxelized</code> format of synthetic microstructure, the generated polycrystals are converted to a raster or voxelized format. An example code for generating voronoi polycrystal in a <code class="language-plaintext highlighter-rouge">slurm cluster</code> is shown below. Please note that the time of my investigation the current <code class="language-plaintext highlighter-rouge">version</code> of Neper was <strong>3.5</strong>.</p>

<div class="code-header">
  <button class="copy-code-button fas fa-copy" aria-label="Copy code to clipboard"></button>
</div>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#!/bin/sh</span>
<span class="c">#SBATCH --nodes=1</span>
<span class="c">#SBATCH --array=1-10</span>
<span class="c">#SBATCH --ntasks=10</span>
<span class="c">#SBATCH --time=120:59:00       </span>
<span class="c">#SBATCH --mem=15G      </span>
<span class="c">#SBATCH --job-name=vor_9sd_500_cube_array</span>
<span class="c">#SBATCH -o slurm-%A_%a.out --array=1-10</span>

module load neper/3.5
<span class="nb">mkdir</span> <span class="nv">$SLURM_ARRAY_TASK_ID</span>
<span class="nb">cd</span> <span class="nv">$SLURM_ARRAY_TASK_ID</span>
<span class="nv">domain_val</span><span class="o">=</span>500
<span class="nv">mean_val</span><span class="o">=</span>30
<span class="nv">sd_val</span><span class="o">=</span>9<span class="p">;</span>

neper <span class="nt">-T</span> <span class="nt">-n</span> from_morpho <span class="nt">-id</span> <span class="nv">$SLURM_ARRAY_TASK_ID</span> <span class="nt">-domain</span> <span class="s2">"cube(</span><span class="nv">$domain_val</span><span class="s2">,</span><span class="nv">$domain_val</span><span class="s2">,</span><span class="nv">$domain_val</span><span class="s2">)"</span> <span class="nt">-morpho</span> <span class="s2">"voronoi,diameq:lognormal(</span><span class="nv">$mean_val</span><span class="s2">,</span><span class="nv">$sd_val</span><span class="s2">)"</span> <span class="nt">-format</span> tesr,ori <span class="nt">-tesrsize</span> <span class="nv">$domain_val</span> <span class="nt">-tesrformat</span> binary16 <span class="nt">-oricrysym</span> cubic <span class="nt">-ori</span> random <span class="nt">-statcell</span> size,diameq,w <span class="nt">-o</span> voronoi_sd<span class="s2">"</span><span class="nv">$sd_val</span><span class="s2">"</span>_<span class="s2">"</span><span class="nv">$domain_val</span><span class="s2">"</span></code></pre></figure>

<p><img src="http://showmicislam.com/docs/assets/images/voronoi.png" alt="Neper-Voronoi" class="align-center" /></p>
<h2 id="slurm-script-for-laguerre-tessellation">Slurm script for Laguerre tessellation</h2>
<p><code class="language-plaintext highlighter-rouge">Laguerre</code> tessellation is based on Voronoi tessellation. The main difference for Laguerre is that the generated seed are not equidistant from the grain boundary. Laguerre tessellation is used for simulating foams and is better in making a <code class="language-plaintext highlighter-rouge">wider grain-size distributions</code>.</p>

<div class="code-header">
  <button class="copy-code-button fas fa-copy" aria-label="Copy code to clipboard"></button>
</div>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c">#!/bin/sh</span>
<span class="c">#SBATCH --nodes=1</span>
<span class="c">#SBATCH --array=1-10</span>
<span class="c">#SBATCH --ntasks=10</span>
<span class="c">#SBATCH --time=69:59:00       </span>
<span class="c">#SBATCH --mem=20G      </span>
<span class="c">#SBATCH --job-name=laguerre_sd9_200_cube_array</span>
<span class="c">#SBATCH -o slurm-%A_%a.out --array=1-10</span>

module load neper/3.5
<span class="nb">mkdir</span> <span class="nv">$SLURM_ARRAY_TASK_ID</span>
<span class="nb">cd</span> <span class="nv">$SLURM_ARRAY_TASK_ID</span>
<span class="nv">domain_val</span><span class="o">=</span>500
<span class="nv">mean_val</span><span class="o">=</span>30
<span class="nv">sd_val</span><span class="o">=</span>9<span class="p">;</span>

neper <span class="nt">-T</span> <span class="nt">-n</span> from_morpho <span class="nt">-id</span> <span class="nv">$SLURM_ARRAY_TASK_ID</span> <span class="nt">-domain</span> <span class="s2">"cube(</span><span class="nv">$domain_val</span><span class="s2">,</span><span class="nv">$domain_val</span><span class="s2">,</span><span class="nv">$domain_val</span><span class="s2">)"</span> <span class="nt">-morpho</span> <span class="s2">"diameq:lognormal(</span><span class="nv">$mean_val</span><span class="s2">,</span><span class="nv">$sd_val</span><span class="s2">)"</span> <span class="nt">-morphooptiini</span> <span class="s2">"coo:packing,weight:0.5*diameq"</span> <span class="nt">-format</span> tesr,ori <span class="nt">-tesrsize</span> <span class="nv">$domain_val</span> <span class="nt">-tesrformat</span> binary16 <span class="nt">-oricrysym</span> cubic <span class="nt">-ori</span> random <span class="nt">-statcell</span> size,diameq,w <span class="nt">-o</span> laguerre_sd<span class="s2">"</span><span class="nv">$sd_val</span><span class="s2">"</span>_<span class="s2">"</span><span class="nv">$domain_val</span><span class="s2">"</span></code></pre></figure>]]></content><author><name>Showmic Islam</name></author><category term="docs" /><category term="DREAM.3D" /><category term="Neper" /><summary type="html"><![CDATA[]]></summary></entry></feed>