From 91ce0025ae2ae62a153fcf889f9ca481c7bb09ee Mon Sep 17 00:00:00 2001 From: kevmoor Date: Mon, 11 Nov 2024 16:17:55 -0700 Subject: [PATCH] Update Installation Instructions, CI and Docs for latest versions, add sources, and update to use OWENSOpenFAST_jll --- .github/workflows/CI.yaml | 40 +++- .github/workflows/Documentation.yml | 9 +- Project.toml | 11 ++ README.md | 1 + docs/make.jl | 2 +- ...nstallation.md => indepth_installation.md} | 187 ++++++++---------- docs/src/index.md | 10 +- 7 files changed, 141 insertions(+), 119 deletions(-) rename docs/src/{installation.md => indepth_installation.md} (69%) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 350e8f83..92acaa20 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -3,7 +3,7 @@ on: push: branches: - master - tags: '*' + tags: ['*'] pull_request: concurrency: # Skip intermediate builds: always. @@ -12,26 +12,46 @@ concurrency: cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} jobs: test: - name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} + name: Julia ${{ matrix.version }} - ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: version: - - '1.6' + - '1.10' - '1' os: - ubuntu-latest - arch: - - x64 + include: + - os: windows-latest + version: '1' + - os: macOS-latest + version: '1' steps: - - uses: actions/checkout@v2 - - uses: julia-actions/setup-julia@v1 + - uses: actions/checkout@v4 + - uses: julia-actions/setup-julia@v2 with: version: ${{ matrix.version }} - arch: ${{ matrix.arch }} - - uses: julia-actions/cache@v1 + - uses: julia-actions/cache@v2 - name: Install OpenFASTWrappers - run: julia --project=./ -e 'using Pkg; Pkg.add([PackageSpec(url="https://github.com/byuflowlab/Composites.jl.git"),PackageSpec(url="https://github.com/sandialabs/OWENSPreComp.jl.git"),PackageSpec(url="https://github.com/sandialabs/OWENSOpenFASTWrappers.jl.git"),PackageSpec(url="https://github.com/sandialabs/OWENSAero.jl.git"),PackageSpec(url="https://github.com/sandialabs/OWENSFEA.jl.git")])' + shell: julia --color=yes --project=. {0} + run: | + using Pkg + Pkg.add( + PackageSpec(url="https://github.com/byuflowlab/Composites.jl.git"), + PackageSpec(url="git@github.com:sandialabs/OWENSPreComp.jl.git"), + PackageSpec(url="git@github.com:sandialabs/OWENSOpenFAST_jll.jl.git"), + PackageSpec(url="git@github.com:sandialabs/OWENSOpenFASTWrappers.jl.git"), + PackageSpec(url="git@github.com:sandialabs/OWENSAero.jl.git"), + PackageSpec(url="git@github.com:sandialabs/OWENSFEA.jl.git"), + PackageSpec(url="git@github.com:sandialabs/OWENS.jl.git"), + ] + if: ${{ matrix.version == '1.10' }} - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 + - uses: julia-actions/julia-processcoverage@v1 + - uses: codecov/codecov-action@v4 + with: + file: lcov.info + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml index 15628485..3bc35562 100644 --- a/.github/workflows/Documentation.yml +++ b/.github/workflows/Documentation.yml @@ -4,7 +4,7 @@ on: push: branches: - master - tags: '*' + tags: ['*'] pull_request: jobs: @@ -13,14 +13,15 @@ jobs: contents: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: julia-actions/setup-julia@v1 + - uses: actions/checkout@v4 + - uses: julia-actions/setup-julia@v2 with: version: '1' + - uses: julia-actions/cache@v2 - name: Install dependencies env: PYTHON: "" - run: julia --project=docs/ -e 'using Pkg; Pkg.add(PackageSpec(url="https://github.com/byuflowlab/Composites.jl.git"));Pkg.add(PackageSpec(url="https://github.com/sandialabs/OWENSPreComp.jl.git"));Pkg.add(PackageSpec(url="https://github.com/sandialabs/OWENSOpenFASTWrappers.jl.git"));Pkg.add(PackageSpec(url="https://github.com/sandialabs/OWENSAero.jl.git")); Pkg.add(PackageSpec(url="https://github.com/sandialabs/OWENSFEA.jl.git")); Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()' + run: julia --project=docs/ -e 'using Pkg; Pkg.add(PackageSpec(url="https://github.com/sandialabs/OWENSOpenFAST_jll.jl.git")); Pkg.add(PackageSpec(url="https://github.com/sandialabs/OWENSOpenFASTWrappers.jl.git")); Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()' - name: Build and deploy env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # If authenticating with GitHub Actions token diff --git a/Project.toml b/Project.toml index a3dc2371..d489fa28 100644 --- a/Project.toml +++ b/Project.toml @@ -15,6 +15,7 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" MAT = "23992714-dd62-5051-b70f-ba57cb901cac" OWENSAero = "ac8500f8-acb1-479a-8630-5dcb97b7c093" OWENSFEA = "5906b1e7-6737-4278-91ec-d653c88addb4" +OWENSOpenFAST_jll = "ac0e1b5c-a850-5466-8291-e142bbb8e693" OWENSOpenFASTWrappers = "1f4f357c-c864-4b71-8437-d48f9e1bb3e6" OWENSPreComp = "7fd84261-8b17-47b6-a87d-1cc34e69440e" OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" @@ -26,6 +27,12 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" WriteVTK = "64499a7a-5c06-52f2-abe2-ccb03c286192" YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" +[sources] +OWENSAero = {url = "https://github.com/sandialabs/OWENSAero.jl"} +OWENSFEA = {url = "https://github.com/sandialabs/OWENSFEA.jl"} +OWENSOpenFAST_jll = {url = "https://github.com/sandialabs/OWENSOpenFAST_jll.jl"} +OWENSOpenFASTWrappers = {url = "https://github.com/sandialabs/OWENSOpenFASTWrappers.jl"} + [compat] DelimitedFiles = "1" Dierckx = "0.5" @@ -34,6 +41,10 @@ FLOWMath = "0.3, 0.4" GXBeam = "0.5.1" HDF5 = "0.17" MAT = "0.10" +OWENSAero = "1" +OWENSFEA = "1" +OWENSOpenFASTWrappers = "1" +OWENSOpenFAST_jll = "4" OWENSPreComp = "1" OrderedCollections = "1" ProgressBars = "1" diff --git a/README.md b/README.md index 33dac71d..3f13e1c0 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![](https://img.shields.io/badge/docs-dev-blue.svg)](https://sandialabs.github.io/OWENS.jl/dev) ![](https://github.com/sandialabs/OWENS.jl/workflows/CI/badge.svg) +[![codecov.io](https://codecov.io/github/sandialabs/OWENS.jl/coverage.svg?branch=master)](https://codecov.io/github/sandialabs/OWENS.jl?branch=master) * *Documentation:* [sandialabs.github.io/OWENS.jl/](https://sandialabs.github.io/OWENS.jl/dev) * *Code:* [github.com/sandialabs/OWENS.jl](https://github.com/sandialabs/OWENS.jl) diff --git a/docs/make.jl b/docs/make.jl index 3fa9f0d9..e8d22183 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -8,7 +8,7 @@ makedocs(; modules = [OWENS], pages = [ "Home" => "index.md", - "Installation" => "installation.md", + "Installation" => "indepth_installation.md", "Examples" => [ joinpath("examples", "A_simplyRunningOWENS.md"), joinpath("examples", "B_detailedInputs.md"), diff --git a/docs/src/installation.md b/docs/src/indepth_installation.md similarity index 69% rename from docs/src/installation.md rename to docs/src/indepth_installation.md index 794b8140..2a0f34e1 100644 --- a/docs/src/installation.md +++ b/docs/src/indepth_installation.md @@ -1,5 +1,5 @@ -# Installation Instructions +# In-Depth Installation Instructions for New Users, Developer Install, and Julia 1.10 and Older The OWENS software has been developed and designed to highly flexible and to operate in the paradigm similar to modern open source software, leveraging tools such as the terminal, git, public software repositories, and automated package management both for the operating system and the programming language. Before attempting these instructions, if you are not familiar with these types of tools, please consider becoming familiar with them prior to proceeding. Here are some of the first google hits for guides: @@ -7,99 +7,62 @@ The OWENS software has been developed and designed to highly flexible and to ope - https://www.freecodecamp.org/news/the-beginners-guide-to-git-github/ - https://www.howtogeek.com/63997/how-to-install-programs-in-ubuntu-in-the-command-line/ -In short, you should be able to compile OpenFAST on your system before attempting this. +The use of precompiled binaries for the optional OpenFAST fortran libraries significantly simplifies use and installation. However, if you need to make modifications to the OpenFAST coupling, it requires an entirely different level of software development skills, and would require the user to become proficient at developing and compiling the standalone OpenFAST code first. -Future distributions are planned to also include a precompiled binary for each of the three major operating systems, with the aspiration of being able to reduce the required knowledge to the OWENS inputs, outputs, and operation. Until then, here are installation instructions for the three major operating systems. **ORDER OF OPERATIONS AND DETAILS ARE IMPORTANT FOR A SUCCESSFUL BUILD, DO NOT SKIP STEPS** - -## Windows - -At this stage in the software's maturity, please use mac or linux environments unless the user is **highly** experienced with compiled software development in a windows environment. Installation and troubleshooting on a dedicated unix based system is at least 1/10th that of Windows (also why every supercomputer uses linux...) The WSL (windows subsystem for linux) can also be installed (https://allthings.how/how-to-use-linux-terminal-in-windows-11/) and can be set up to run via just the terminal or also set up to use the graphical capabilities of your machine, and the memory can be mapped back and forth as described in the link above. However, this adds several levels of complexity, and you **WILL** run into machine based issues until we finish the pipeline for windows download and run precompiled binaries. - -Install julia, paraview, and visual studio manually by downloading/installing the windows versions for each: +## Main New Programs' Installation (Julia, Paraview, Optionally VSCode) +Install julia, paraview, and visual studio by downloading/installing the OS specific versions for each, either manually (links below for your convenience) or through your favorite package manager: - https://julialang.org/downloads/ - https://www.paraview.org/download/ - https://visualstudio.microsoft.com/downloads/ -Be sure julia is on your path, and follow the windows compilation instructions for the openfast Inflowwind, AeroDyn, MoorDyn and HydroDyn libraries. Installation is otherwise the same as the Linux instructions below - -When setting up ssh keys, be sure to follow the windows specific instructions https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent and note that you may have to use id_ecdsa keys. - -Set up the environment variables below and be sure Julia is also on the path (https://www.wikihow.com/Create-an-Environment-Variable-in-Windows-10) - -Install the OWENS custom dependices as listed below. - -If you wish to use the openfast libraries, follow the windows compilation instructions for the openfast Inflowwind, AeroDyn, MoorDyn and HydroDyn libraries. Also note that you will need to change the library paths in the top level OWENS scripts to match the resulting libraries' locations. - -Set up VS code as also described below. - -Windows notes: details are key, hash mismatch may mean that you are behind a proxy and the proxy isn't setup correctly. For visual studio, the default installation and recommendations should work. If importing the provided vs-code profile, the quick keys may need to be remapped to control from cmd. - -## Mac - -Essentially the same installation as Linux except we recommend using the homebrew package manager, so exchange all "apt-get" with "brew" - - brew install git - brew install wget - brew install vim - brew install cmake - brew install gfortran - brew install build-essential - brew install openblas - brew install lapack +Be sure julia is on your path (should happen automatically as part of the installation process) +It is recommended, but not required to set up VS code as also described below. -## Linux +Windows notes: +- details are key, hash mismatch may mean that you are behind a proxy and the proxy isn't setup correctly. For visual studio, the default installation and recommendations should work. If importing the provided vs-code profile, the quick keys may need to be remapped to control from cmd. +- Set up the environment variables below and be sure Julia is also on the path (https://www.wikihow.com/Create-an-Environment-Variable-in-Windows-10) -Install/Update Required Compilers and Programs; If you already have an environment that can build OpenFAST, then these should already be installed. - apt-get update -y - apt-get install git -y - apt-get install wget -y - apt-get install vim -y - apt-get install cmake -y - apt-get install gfortran -y - apt-get install build-essential -y - apt-get install libblas-dev liblapack-dev -y - -# Install julia - cd ~ - curl -fsSL https://install.julialang.org | sh - -in your ~/.bashrc file (.zshrc on Mac), tell julia to use the command line git by inserting the following: +# Environment Variables +If you are using a proxy, such as those at the national labs be sure that the proxy variables are also declared/exported in your .bash_profile or .bashrc or the equivalent list of environment variables in Windows. Additionally, you may need to tell your system where the SSL cert file is, and CA bundle. For those at Sandia, more information can be found at: https://wiki.sandia.gov/pages/viewpage.action?pageId=227381234#SandiaProxyConfiguration,Troubleshooting&HTTPS/SSLinterception-SSLCertificate.1. -export JULIA_PKG_USE_CLI_GIT=true +You cay need to then tell julia where the SSL_CA_ROOTS are. Then in some instances, the built in julia git system has trouble with proxies, so you can tell it to use the command line interface git. -Additionally, if you are not finding that your path is being appended to, you can instead create an alias by also appending to the ~/.bashrc +Here is an example section of a mac .zshrc script with dummy variables filled in assuming the machine is behind a proxy. If you aren't behind a proxy you should be able to just ignore all of the first block, and possibly the SSL CA, and CLI_GIT variables depending on your operating system and setup. -alias julia="path/to/your/julia-1.x.x/bin/julia" + export HTTP_PROXY="http://user:nopass@proxy.yourproxy.com:80/" + export HTTPS_PROXY="http://user:nopass@proxy.yourproxy.com:80/" + export no_proxy=*.local,169.254/16,*.yourproxy.com,*.srn.yourproxy.com,localhost,127.0.0.1,::1 + export NO_PROXY=*.local,169.254/16,*.yourproxy.com,*.srn.yourproxy.com,localhost,127.0.0.1,::1 + git config --global http.proxy http://user:nopass@proxy.yourproxy.com:80 + git config --global https.proxy http://user:nopass@proxy.yourproxy.com:80 -# Environment Variables -If you are using a proxy, be sure that the proxy variables are also declared/exported in your .bash_profile or .bashrc or the equivalent + export SSL_CERT_FILE=/Users/kevmoor/.ssh/your_root_ca.pem + export REQUESTS_CA_BUNDLE=${SSL_CERT_FILE} - http_proxy, https_proxy, HTTP_PROXY, HTTPS_PROXY, no_proxy, NO_PROXY - git config --global http.proxy http://user:nopass@proxy.yourorg:number - git config --global https.proxy http://user:nopass@proxy.yourorg:number export JULIA_SSL_CA_ROOTS_PATH="" - export JULIA_SSL_NO_VERIFY_HOSTS="*.yourorgurl" - export JULIA_PKG_USE_CLI_GIT=true + export JULIA_PKG_USE_CLI_GIT=true + export JULIA_NUM_THREADS=1 + export OMP_NUM_THREADS=10 # Test That Julia Runs -the following should get you in and out of the julia interactive repl +the following should get you in and out of the julia interactive repl, open up a terminal and type julia exit() # Set up SSH Keys - # Note that for installation behind the Sandia network, you will need to be on the network and follow additional instructions at https://wiki.sandia.gov/pages/viewpage.action?pageId=227381234#SandiaProxyConfiguration,Troubleshooting&HTTPS/SSLinterception-SSLCertificate.1 - # Make ssh keys and put in the correct places +Note that for installation behind the Sandia network, you will need to be on the network and follow additional instructions at https://wiki.sandia.gov/pages/viewpage.action?pageId=227381234#SandiaProxyConfiguration,Troubleshooting&HTTPS/SSLinterception-SSLCertificate.1. For windows, note that you may have to use id_ecdsa keys. + # Go to your gihub account settings # left side, SSH and GPG keys # new ssh key # name: owensrepos # or whatever you'd like - # back in the linux terminal + # back in the terminal, use the following, or the equivalent for Windows found in the github docs (https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) ssh-keygen -t rsa -m PEM -C username@youremail.gov - # enter, enter, enter (i.e. use defaults) + # enter, enter, enter (i.e. use defaults with !NO PASSWORD! since it is not necessary) cd ~ ls -a cd .ssh @@ -114,30 +77,6 @@ Additionally, if you find that your ssh is erroring when you try to install pack PubkeyAcceptedAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-ed25519 -# Install Optional OpenFAST Dependices -If your system is already set up such that it is capable of compiling OpenFAST, and you are on mac or linux, then you may skip this and rely on the automatically compiled version that are created when the OWENSOpenFAST libraries are installed by Julia. - mkdir coderepos - cd coderepos - # Install openfast coupled libraries !NOTE!: if you change the location of the compiled libraries, you may need to update the rpath variable, or recompile. - git clone --depth 1 git@github.com:andrew-platt/openfast.git - # if this errors, you can clone git@github.com:OpenFAST/openfast.git it just doesn't have the latest updates from Andy, but the interface should be the same and should run. - cd openfast - git remote set-branches origin '*' - git fetch --depth 1 origin f/ADI_c_binding_multiRotor - git checkout f/ADI_c_binding_multiRotor - mkdir build - cd build - # can also add -DOPENMP=ON if desired for acceleration of OLAF - # you can rebuild later by removing the build folder and following these instructions again. - cmake -DBUILD_SHARED_LIBS=ON .. - make ifw_c_binding - # make moordyn_c_binding - # make hydrodyn_c_binding - make aerodyn_inflow_c_binding - make aerodyn_driver - make turbsim - cd ../../ - # Brief Julia Primer Now open the julia interactive repl and run the following blocks, obviously a multi-line block should be entered as one. @@ -308,7 +247,32 @@ rm("delim_file.txt") # julia's function that does the same thing ############################################################### ``` -## OWENS Installation +## OWENS Installation for Julia 1.11+ + +```julia +using Pkg +Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENS.jl.git")) +``` + +Note that there are many packages used in the examples. While they are installed within the OWENS.jl environment, if you want to additionally install them in your 1.11+ environment where you will likely be running from: +```julia +using Pkg +Pkg.add("Statistics");Pkg.add("Dierckx");Pkg.add("QuadGK");Pkg.add("FLOWMath");Pkg.add("HDF5");Pkg.add("ImplicitAD");Pkg.add("GXBeam"); +Pkg.add("DelimitedFiles");Pkg.add("Statistics");Pkg.add("FFTW") +``` + +If you want to show any of the plots in the examples, they currently use the PyPlot interface, which means that julia has to install its own conda in the back end, which can take some time. Alternatively, you can point to your own python if desired. +```julia +using Pkg +# Install PyPlot if not already installed +Pkg.add("PyPlot") #Note, this will take a while (maybe 10 min depending on your connection) since it is pulling conda and installing it behind the ~/.julia folder +# if you want to use your already installed python, you can instead run +# ENV["PYTHON"] = "path to your desired python install" +# Pkg.add("PyCall") +# Pkg.add("PyPlot") +``` + +## OWENS Installation for Julia 1.10 and older (down to 1.6) These steps require a secure download, such as through the SSH keys detailed above, to avoid man-in-the-middle attacks. ```julia @@ -321,18 +285,12 @@ println("#####################") Pkg.add("Statistics");Pkg.add("Dierckx");Pkg.add("QuadGK");Pkg.add("FLOWMath");Pkg.add("HDF5");Pkg.add("ImplicitAD");Pkg.add("GXBeam"); Pkg.add(PackageSpec(url="https://github.com/byuflowlab/Composites.jl.git")) Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENSPreComp.jl.git")) +Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENSOpenFAST_jll.jl.git")) Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENSOpenFASTWrappers.jl.git")) Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENSAero.jl.git")) Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENSFEA.jl.git")) Pkg.add(PackageSpec(url="git@github.com:sandialabs/OWENS.jl.git")) -# Install PyPlot if not already installed -Pkg.add("PyPlot") #Note, this will take a while (maybe 10 min depending on your connection) since it is pulling conda and installing it behind the ~/.julia folder -# if you want to use your already installed python, you can instead run -# ENV["PYTHON"] = "path to your desired python install" -# Pkg.add("PyCall") -# Pkg.add("PyPlot") - ``` # Testing Your Build of OWENS @@ -397,10 +355,9 @@ start Julia from the cloned directory and use the command: ] dev . -This type of installation will cause the module to reload each time Julia starts without needing to tell Julia to update. You are developing the current directory - -alternatively, instead of using or import to get access to the module, within julia +This type of installation will cause the module to reload each time Julia starts without needing to tell Julia to update. NOTE: even though julia 1.11 can to a regular install with a single line and resolve the custom dependencies, for the dev install it doesn't appear to automatically do so; so you may need to be careful about the installation order of dev packages to ensure you have downstream dependencies satisfied. +Alternatively, you can effectively copy and paste the module in, like so: ```julia include("path/to/module.jl/source/module.jl") ``` @@ -412,3 +369,31 @@ You can also install a specific branch of a remote repository package without ha using Pkg Pkg.add(url = "git@github.com:sandialabs/OWENS.jl.git", rev = "dev") ``` + +# Custom Install of Optional OpenFAST Dependices +If your system is already set up such that it is capable of compiling OpenFAST, and you are on mac or linux, then you may skip this and rely on the automatically compiled version that are created when the OWENSOpenFAST libraries are installed by Julia. + mkdir coderepos + cd coderepos + # Install openfast coupled libraries !NOTE!: if you change the location of the compiled libraries, you may need to update the rpath variable, or recompile. + git clone --depth 1 git@github.com:andrew-platt/openfast.git + # if this errors, you can clone git@github.com:OpenFAST/openfast.git it just doesn't have the latest updates from Andy, but the interface should be the same and should run. + cd openfast + git remote set-branches origin '*' + git fetch --depth 1 origin f/ADI_c_binding_multiRotor + git checkout f/ADI_c_binding_multiRotor + mkdir build + cd build + # can also add -DOPENMP=ON if desired for acceleration of OLAF + # you can rebuild later by removing the build folder and following these instructions again. + cmake -DBUILD_SHARED_LIBS=ON .. + make ifw_c_binding + make moordyn_c_binding + make hydrodyn_c_binding + make aerodyn_inflow_c_binding + make aerodyn_driver + make turbsim + cd ../../ + +There is also a OWENSOpenFASTWrappers.jl/deps/legacy_build.jl script which can be useful. + +Then, within OWENS, you would provide the path to the resulting binaries you'd like to use (e.g. adi_lib="buildpath/openfast/build/modules/AeroDyn/libaerodyn_inflow_c_binding.so") instead of the default, which points to the precompiled OWENSOpenFAST_jll.jl binaries. \ No newline at end of file diff --git a/docs/src/index.md b/docs/src/index.md index c55e07cb..6d32bef4 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,6 +1,7 @@ # OWENS (Onshore/Offshore Wind/Water ENergy Simulator) [![](https://img.shields.io/badge/docs-dev-blue.svg)](https://sandialabs.github.io/OWENS.jl/dev) ![](https://github.com/sandialabs/OWENS.jl/workflows/CI/badge.svg) +[![codecov.io](https://codecov.io/github/sandialabs/OWENS.jl/coverage.svg?branch=master)](https://codecov.io/github/sandialabs/OWENS.jl?branch=master) * *Documentation:* [sandialabs.github.io/OWENS.jl/](https://sandialabs.github.io/OWENS.jl/dev) * *Code:* [github.com/sandialabs/OWENS.jl](https://github.com/sandialabs/OWENS.jl) @@ -9,6 +10,12 @@ This package is for experienced researchers and analyists with both software and OWENS is an ontology, or way of coupling modular aerodynamic, structural, hydrodynamic, and controls packages. It was originally based on the structural dynamics solver by Brian Owens (see dissertation: http://hdl.handle.net/1969.1/151813). However, it has been rewritten into the Julia programming language, modularized, and many of the issues related to aerodynamic coupling and floating dynamics solved, with extensive expansion into other areas and features to provide a seamless and automated process that takes in high level design details and does all of the preprocessing, running, and post processing that is normally done under different roofs or by different manual processes. This was done with the intent of enabling fast, parametric design. We have many of the modules propogating automatic gradients, however this is still a future challenge to solve well. +## Installation +For Julia 1.11+. For new Julia users, developer install, and those wishing to use Julia 1.10 and below, see the In-Depth Installation page. +```julia +pkg> add git@github.com:sandialabs/OWENS.jl.git +``` + ```@raw html