<commit_before><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- InstanceBegin template="/Templates/Main.dwt" codeOutsideHTMLIsLocked="false" -->
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="shortcut icon" href="images/favicon.ico" >
      <!-- InstanceBeginEditable name="doctitle" -->
      <title>Nektar++ - Linux Compile Instructions</title>
      <!-- InstanceEndEditable -->
<link rel="stylesheet" href="style.css">
      <!-- InstanceBeginEditable name="CSS_Style" -->
<style type="text/css">
        <!--
#menu_CompileLinux {
	font-weight: bold;
}
-->
      </style>
      <!-- InstanceEndEditable -->
      <!--[if IE]>
    <style type="text/css"> 
      .twoColHybLt #sidebar1 { padding-top: 30px; margin-top: 20px; }
      .twoColHybLt #mainContent { zoom: 1; padding-top: 15px; }
    </style>
    <![endif]-->
      <!-- InstanceParam name="LibraryMenu" type="boolean" value="false" -->
      <!-- InstanceParam name="CompileMenu" type="boolean" value="true" -->
    </head>
  <body class="twoColHybLt">
    <div id="container">
      <div id="sidebar1">
        <h3 style="text-align: center;">
          <a href="index.html" id="menu_Nektar">
            <img src="images/nektar.png" alt="Nektar++" width="155" height="38" />
          </a>
        </h3>

<p><a href="downloads.html" id="menu_Downloads">Downloads</a></p>
<p><a href="compile.html" id="menu_Compile">Compilation Instructions</a>
          <br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_linux.html" id="menu_CompileLinux">Linux</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_windows.html" id="menu_CompileWindows">Windows</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_osx.html" id="menu_CompileOSX">Mac OS X</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_unit_tests.html" id="menu_CompileUnitTests">Unit Tests</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_regression_tests.html" id="menu_CompileRegressionTests">Regression Tests</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_documentation.html" id="menu_CompileDocumentation">Documentation</a><br/>
    </p>
<p><a href="usage.html" id="menu_Usage">Example Usage</a></p>
<p><a href="educational_material.html" id="menu_EducationalMaterial">Educational
Material</a></p>
<p><a href="code/index.html" id="menu_Library">Documentation</a></p>
<p><a href="team.html" id="menu_Team">Team Members</a></p>
<p><a href="publications.html" id="menu_Publications">Publications</a></p>
<p><a href="license.html" id="menu_License">License</a></p>
<p><a href="acknowledgments.html" id="menu_Acknowledgments">Acknowledgments</a></p>
<p><a href="mailto:<EMAIL>" id="menu_Contact">Contact</a></p>

      </div>
      <div id="mainContent">
        <!-- InstanceBeginEditable name="Title" -->
        <h1>Compile Instructions</h1>
        <h2>Linux - GCC / kDevelop </h2>
        <!-- InstanceEndEditable -->
        <hr/>
        <ul>
          <li>
            <h3 align="left">
              <small>
                <a href="#Setting_up_GCC">Setting up GCC</a>
              </small>
            </h3>
          </li>
          <li>
            <h3 align="left">
              <small>
                <a href="#Organizing_the_ThirdParty_Source_Files">Organizing the ThirdParty Source Files</a>
              </small>
            </h3>
          </li>
          <li>
            <h3>
              <small>
                <a href="#Setting_up_BLAS">Setting up BLAS</a>
              </small>
            </h3>
          </li>
          <li>
            <h3>
              <small>
                <a href="#Generating_the_GCC_Makefiles_with_CMake">Generating the GCC Makefiles with CMake</a>
              </small>
            </h3>
          </li>
          <li>
            <h3>
              <a href="#Compiling_the_Solvers_and_Utilities">
                <small>Compiling the Solvers and Utilities</small>
              </a>
            </h3>
          </li>
           <li>
                <h3><a href="#Compiling_Regression_Tests"><small>Compiling the Regression Tests</small></a></h3>
            </li>
        </ul>


        <hr>
          <!-- InstanceBeginEditable name="BodyText" -->
          <h3 align="left">
            <a name ="Setting_up_GCC" ></a>Setting up GCC
          </h3>
          <p align="left">
          In order to compile Nektar++, you must have a newer version of GCC installed. GCC 4.1 
          and newer will work, but 4.2 or newer is recommended. 
          Below I will give instructions on how to check the GCC version number, 
          and installing a new version if it is too old.
        </p>
          <ol>
            <li>
              At the terminal, type 
              <div class="code"><pre>gcc -v</pre></div>
              If the last line says the version number is 4.1 or newer, skip to the next section; otherwise you may continue to read.
            </li>
            <li>You may either ask your system administrator to perform this upgrade for you (recommended), or install GCC in to your local account. If you choose the first option, wait for the new installation and then continue to the next section.</li>
            <li>
              First, go to <a href="http://gcc.gnu.org/mirrors.html" target="_blank">http://gcc.gnu.org/mirrors.html</a> and select a mirror. Download a 4.1 or later GCC release from the mirror you select (you probably want to select the newest version).
            </li>
            <li>
              Go to <a href="http://gcc.gnu.org/install/" target="_blank">http://gcc.gnu.org/install/</a> and follow the instructions to install GCC. It is too complicated and error prone to cover everything here. Install at least the C, C++, and Fortran compilers. Once &quot;gcc -v&quot; outputs a version later than 4.1, you can continue to the next section.
             <br>
                  The general setup instructions are as follows. However, there might be dependencies that need to be installed.
                  <div class="code" align="left"><pre>tar -xvjf &lt;filename&gt;.tar.bz2 <br />cd &lt;new_gcc_directory&gt; <br />mkdir MyObj<br />cd MyObj <br />../configure --prefix=&lt;install_path&gt; <br/> --enable-languages=c,c++,fortran <br />make <br />make install </pre></div> 
                  Set your path: 
		  <ul><li> for (T)CSH Shells
		  <div class="code"><pre>setenv PATH &lt;install_path&gt;:$PATH</pre></div>
		  </li>
		 <li> for BASH Shells<div class="code"><pre>export PATH=&lt;install_path&gt;:$PATH</pre></div>
		 </li>
</ul>It may be useful to add this to your login script.
                </li>
          </ol>
          <h3 align="left">
            <a name="Organizing_the_ThirdParty_Source_Files"></a> Organizing the ThirdParty Source Files
          </h3>
          <p align="left">
            <em>Nektar++</em> requires additional software to function. Many of
            these libraries are included in a typical distribution and so not
            all the library sources provided in the <em>ThirdParty</em>
            directory may be needed. However, while unlikely, the version
            provided by your distribution may not be compatible with the
            current build of <em>Nektar++</em>. If you encounter problems, you
            should first link to those versions distributed in the ThirdParty
            distribution.</p>
          <p align="left">
            You will be given a <em>Nektar++</em> directory and a <em>ThirdParty</em> directory (includes needed libraries from other sources). These need to be organized into the correct directory hierarchy   for CMake to find all of the required files. I will indicate a directory by following its name with a forward slash.
          </p>
          <ol>
            <li>
              Put the <em>ThirdParty/</em> directory in <em>Nektar++/</em>. (This will mean <em>library/</em> and <em>ThirdParty/</em> are both sub-directories of the original <em>Nektar++/</em>.)
            </li>
            <li>
              At the terminal in <em>ThirdParty/</em>, extract the tinyxml_2_4_3.zip archive with 
              <div class="code"><pre>unzip tinyxml_2_4_3.zip</pre></div>
              This will create <em>tinyxml/</em>.
            </li>
            <li>
              Extract the loki-0.1.3.tar.bz2 archive with 
              <div class="code"><pre>tar -xjvf loki-0.1.3.tar.bz2</pre></div>
              This will create <em>loki-0.1.3/</em>.
            </li>
            <li>
              CMake is an open-source, cross-platform make file generator system.  We will use it to generate the needed makefiles to compile Nektar++.  We require version 2.8 or greater.  To check your currently installed version, type the following at the command line:

	      <div class="code"><pre>ccmake --version</pre></div>

	      If you do not have CMake installed, or the version is too old, then you can build it from source.
               <ol>
                <li>
                  In <em>ThirdParty/</em>, extract the cmake-2.8.0.tar.gz archive with 
                  <div class="code"><pre>tar -xzvf cmake-2.8.0.tar.gz </pre></div>
                </li><commit_msg>Updated Linux compile docs regarding ccmake requiring ncurses.<commit_after><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- InstanceBegin template="/Templates/Main.dwt" codeOutsideHTMLIsLocked="false" -->
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="shortcut icon" href="images/favicon.ico" >
      <!-- InstanceBeginEditable name="doctitle" -->
      <title>Nektar++ - Linux Compile Instructions</title>
      <!-- InstanceEndEditable -->
<link rel="stylesheet" href="style.css">
      <!-- InstanceBeginEditable name="CSS_Style" -->
<style type="text/css">
        <!--
#menu_CompileLinux {
	font-weight: bold;
}
-->
      </style>
      <!-- InstanceEndEditable -->
      <!--[if IE]>
    <style type="text/css"> 
      .twoColHybLt #sidebar1 { padding-top: 30px; margin-top: 20px; }
      .twoColHybLt #mainContent { zoom: 1; padding-top: 15px; }
    </style>
    <![endif]-->
      <!-- InstanceParam name="LibraryMenu" type="boolean" value="false" -->
      <!-- InstanceParam name="CompileMenu" type="boolean" value="true" -->
    </head>
  <body class="twoColHybLt">
    <div id="container">
      <div id="sidebar1">
        <h3 style="text-align: center;">
          <a href="index.html" id="menu_Nektar">
            <img src="images/nektar.png" alt="Nektar++" width="155" height="38" />
          </a>
        </h3>

<p><a href="downloads.html" id="menu_Downloads">Downloads</a></p>
<p><a href="compile.html" id="menu_Compile">Compilation Instructions</a>
          <br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_linux.html" id="menu_CompileLinux">Linux</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_windows.html" id="menu_CompileWindows">Windows</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_osx.html" id="menu_CompileOSX">Mac OS X</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_unit_tests.html" id="menu_CompileUnitTests">Unit Tests</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_regression_tests.html" id="menu_CompileRegressionTests">Regression Tests</a><br/>
          &nbsp;&nbsp;&nbsp;<a href="compile_documentation.html" id="menu_CompileDocumentation">Documentation</a><br/>
    </p>
<p><a href="usage.html" id="menu_Usage">Example Usage</a></p>
<p><a href="educational_material.html" id="menu_EducationalMaterial">Educational
Material</a></p>
<p><a href="code/index.html" id="menu_Library">Documentation</a></p>
<p><a href="team.html" id="menu_Team">Team Members</a></p>
<p><a href="publications.html" id="menu_Publications">Publications</a></p>
<p><a href="license.html" id="menu_License">License</a></p>
<p><a href="acknowledgments.html" id="menu_Acknowledgments">Acknowledgments</a></p>
<p><a href="mailto:<EMAIL>" id="menu_Contact">Contact</a></p>

      </div>
      <div id="mainContent">
        <!-- InstanceBeginEditable name="Title" -->
        <h1>Compile Instructions</h1>
        <h2>Linux - GCC / kDevelop </h2>
        <!-- InstanceEndEditable -->
        <hr/>
        <ul>
          <li>
            <h3 align="left">
              <small>
                <a href="#Setting_up_GCC">Setting up GCC</a>
              </small>
            </h3>
          </li>
          <li>
            <h3 align="left">
              <small>
                <a href="#Organizing_the_ThirdParty_Source_Files">Organizing the ThirdParty Source Files</a>
              </small>
            </h3>
          </li>
          <li>
            <h3>
              <small>
                <a href="#Setting_up_BLAS">Setting up BLAS</a>
              </small>
            </h3>
          </li>
          <li>
            <h3>
              <small>
                <a href="#Generating_the_GCC_Makefiles_with_CMake">Generating the GCC Makefiles with CMake</a>
              </small>
            </h3>
          </li>
          <li>
            <h3>
              <a href="#Compiling_the_Solvers_and_Utilities">
                <small>Compiling the Solvers and Utilities</small>
              </a>
            </h3>
          </li>
           <li>
                <h3><a href="#Compiling_Regression_Tests"><small>Compiling the Regression Tests</small></a></h3>
            </li>
        </ul>


        <hr>
          <!-- InstanceBeginEditable name="BodyText" -->
          <h3 align="left">
            <a name ="Setting_up_GCC" ></a>Setting up GCC
          </h3>
          <p align="left">
          In order to compile Nektar++, you must have a newer version of GCC installed. GCC 4.1 
          and newer will work, but 4.2 or newer is recommended. 
          Below I will give instructions on how to check the GCC version number, 
          and installing a new version if it is too old.
        </p>
          <ol>
            <li>
              At the terminal, type 
              <div class="code"><pre>gcc -v</pre></div>
              If the last line says the version number is 4.1 or newer, skip to the next section; otherwise you may continue to read.
            </li>
            <li>You may either ask your system administrator to perform this upgrade for you (recommended), or install GCC in to your local account. If you choose the first option, wait for the new installation and then continue to the next section.</li>
            <li>
              First, go to <a href="http://gcc.gnu.org/mirrors.html" target="_blank">http://gcc.gnu.org/mirrors.html</a> and select a mirror. Download a 4.1 or later GCC release from the mirror you select (you probably want to select the newest version).
            </li>
            <li>
              Go to <a href="http://gcc.gnu.org/install/" target="_blank">http://gcc.gnu.org/install/</a> and follow the instructions to install GCC. It is too complicated and error prone to cover everything here. Install at least the C, C++, and Fortran compilers. Once &quot;gcc -v&quot; outputs a version later than 4.1, you can continue to the next section.
             <br>
                  The general setup instructions are as follows. However, there might be dependencies that need to be installed.
                  <div class="code" align="left"><pre>tar -xvjf &lt;filename&gt;.tar.bz2 <br />cd &lt;new_gcc_directory&gt; <br />mkdir MyObj<br />cd MyObj <br />../configure --prefix=&lt;install_path&gt; <br/> --enable-languages=c,c++,fortran <br />make <br />make install </pre></div> 
                  Set your path: 
		  <ul><li> for (T)CSH Shells
		  <div class="code"><pre>setenv PATH &lt;install_path&gt;:$PATH</pre></div>
		  </li>
		 <li> for BASH Shells<div class="code"><pre>export PATH=&lt;install_path&gt;:$PATH</pre></div>
		 </li>
</ul>It may be useful to add this to your login script.
                </li>
          </ol>
          <h3 align="left">
            <a name="Organizing_the_ThirdParty_Source_Files"></a> Organizing the ThirdParty Source Files
          </h3>
          <p align="left">
            <em>Nektar++</em> requires additional software to function. Many of
            these libraries are included in a typical distribution and so not
            all the library sources provided in the <em>ThirdParty</em>
            directory may be needed. However, while unlikely, the version
            provided by your distribution may not be compatible with the
            current build of <em>Nektar++</em>. If you encounter problems, you
            should first link to those versions distributed in the ThirdParty
            distribution.</p>
          <p align="left">
            You will be given a <em>Nektar++</em> directory and a <em>ThirdParty</em> directory (includes needed libraries from other sources). These need to be organized into the correct directory hierarchy   for CMake to find all of the required files. I will indicate a directory by following its name with a forward slash.
          </p>
          <ol>
            <li>
              Put the <em>ThirdParty/</em> directory in <em>Nektar++/</em>. (This will mean <em>library/</em> and <em>ThirdParty/</em> are both sub-directories of the original <em>Nektar++/</em>.)
            </li>
            <li>
              At the terminal in <em>ThirdParty/</em>, extract the tinyxml_2_4_3.zip archive with 
              <div class="code"><pre>unzip tinyxml_2_4_3.zip</pre></div>
              This will create <em>tinyxml/</em>.
            </li>
            <li>
              Extract the loki-0.1.3.tar.bz2 archive with 
              <div class="code"><pre>tar -xjvf loki-0.1.3.tar.bz2</pre></div>
              This will create <em>loki-0.1.3/</em>.
            </li>
            <li>
              CMake is an open-source, cross-platform make file generator system.  We will use it to generate the needed makefiles to compile Nektar++.  We require version 2.8 or greater.  To check your currently installed version, type the following at the command line:

	      <div class="code"><pre>ccmake --version</pre></div>

              If you do not have CMake installed, or the version is too old, then you can build it from source. Note that the <em>ccmake</em> tool can only be built if the ncurses library is available on your system (commonly found in /lib on most distributions). If this is not available, the <em>cmake</em> tool can still be built, although its usage is somewhat more tedious.
               <ol>
                <li>
                  In <em>ThirdParty/</em>, extract the cmake-2.8.0.tar.gz archive with 
                  <div class="code"><pre>tar -xzvf cmake-2.8.0.tar.gz </pre></div>
                </li>
{'fraction_non_alphanumeric': 0.14368273156248343, 'fraction_numerical': 0.009119346800275702, 'mean_word_length': 2.3085423609893003, 'pattern_counts': {'":': 0, '<': 537, '<?xml version=': 0, '>': 537, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 8}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2239849', 'n_tokens_mistral': 5906, 'n_tokens_neox': 5579, 'n_words': 1614}