# Get started ## Install 1. Download the archive file from our website, usually it has a name like this `wget muproPFSDK-0.0.2-Linux.tar.xz` 2. Depress the archive file. `tar -xJf muproPFSDK-0.0.2-Linux.tar.xz` 3. Move the content to location you want the SDK to be installed, such as your home directory `mv muproPFSDK-0.0.2-Linux/opt/mupro/phasefieldsdk ${HOME}/mupro` ## Build the main program We are using cmake to help us create the build system and compile our program. You should check the documentation of each main program. In general, the procedure is like this 1. Create your own CMakeUserPresets.json, `cp CMakePresets.json CMakeUserPresets.json` 2. Update the mupro_ROOT cache variable in your CMakeUserPresets.json 3. Configure and build the project ## Obtain the license 1. When you first run the main program, or more specifically call any of the setup subroutines from SDK, the program will detect that no license file is available and it will collect your local machine information, then create a client file which you need to send to MuPRO at mesoscale-modeling@mupro.co 2. Next, we will respond you with a license.lic file that you should put to designated location that the main program can read in the next execution. 3. For a distributed machine, your calculation node needs to have access to the same file system as your login node. And, you need to run the program once on your login node (or whichever node you obtain the client file), because the first run will check the license.lic file and if valid will write the verification result in your home directory, your future run will rely on this file. ## Development environment ### Operating System We recommend using a linux computer with intel processors for your main program development using the Mu-PRO PhaseFieldSDK, since we rely on the intel oneAPI to develop the program. You can check [here](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/intel-oneapi-hpc-toolkit-system-requirements.html) for more information on the hardware and system requirement. ::::{tab-set} :::{tab-item} Linux The SDK is developed on an linux server with Ubuntu 22.04.1 LTS. ::: :::{tab-item} Mac Only Mac computer with intel processors are supported. Mac with M1 chip is not officially supported, you have to test it by yourself. ::: :::{tab-item} Windows The SDK is tested on Windows 10 PRO with Visual Studio Community Edition 2019. ::: :::: ### External dependencies You need to have three softwares installed: 1. intel oneapi basekit 2. intel oneapi hpckit 3. cmake 3.20 and above ### Parallelisim We have implemented distributed parallelization with MPI, while no shared-memory parallelization in used. We use the intel mpi provided by intel oneapi hpckit. ### Compiler We use the intel compilers that is part of the intel oneapi basekit. ### Code editor We recommend using Visual Studio Code as the editor with **Modern Fortran** extension and **fortls** installed. ### Programming language The Mu-PRO PhaseFieldSDK is developed mainly using Fortran, it is highly recommended you also using Fortran for your main program. Theoretically, you can use C or C++ to interoperate with Fortran, but we have not perform such tests, so you have to use C/C++ at your own risk.