13 Commits

313 changed files with 2594 additions and 11569 deletions

View File

@@ -1,39 +0,0 @@
---
name: Build and Deploy Documentation
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
container:
image: gitea.psi.ch/hpce/gitea-pages
env:
JEKYLL_ENV: production
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Build Jekyll website
run: |
bundle exec jekyll --version
bundle exec jekyll build -d public
- name: Configure Git
run: |
git config --global user.name "Gitea Actions"
git config --global user.email "actions@gitea.local"
- name: Push to gitea-pages branch
run: |
git checkout --orphan gitea-pages
git reset --hard
ls -la
cp -r ./public/* .
git add .
git commit -m "Deploy site"
git push -f https://${{secrets.GITHUB_TOKEN}}@gitea.psi.ch/${{ github.repository }}.git gitea-pages

13
.gitignore vendored
View File

@@ -1,10 +1,3 @@
_site/
.sass-cache/
.jekyll-metadata
_pdf
.DS_Store
.idea
vendor/
.bundle/
.ruby-gemset
.ruby-version
# mkdocs
.cache/
site/

6
404.md
View File

@@ -1,6 +0,0 @@
---
title: "Page Not Found"
search: exclude
---
Sorry, but the page you were trying to view does not exist. Try searching for it or looking at the URL to see if it looks correct.

View File

@@ -1,24 +1,4 @@
FROM alpine:3.13
FROM docker.io/squidfunk/mkdocs-material:9.7
WORKDIR /tmp
COPY Gemfile /tmp/
COPY Gemfile.lock /tmp/
RUN apk list -I && apk --no-cache add \
libatomic readline readline-dev libxml2 libxml2-dev \
ncurses-terminfo-base ncurses-terminfo \
libxslt libxslt-dev zlib-dev zlib \
ruby ruby-dev yaml yaml-dev \
libffi-dev build-base git nodejs \
&& gem env \
&& gem install etc --no-document \
&& gem install bundler -v 2.4.22 --no-document \
&& pwd \
&& ls -l \
&& bundle install
VOLUME /src
EXPOSE 4001
WORKDIR /src
CMD ["jekyll", "serve", "--livereload", "-H", "0.0.0.0"]
# add some plugins
RUN pip install mkdocs-glightbox=='0.5.*'

23
Gemfile
View File

@@ -1,23 +0,0 @@
source "https://rubygems.org"
# to publish on github page
# gem 'github-pages', group: :jekyll_plugins
gem 'github-pages', "~> 215"
# to publish without github page
# gem "jekyll-redirect-from", group: :jekyll_plugins
gem "jekyll-redirect-from", "~> 0.16.0"
gem "json", "~> 2.2"
gem "webrick", "~> 1.7.0"
gem "etc", "~> 1.2.0"
gem "bigdecimal", "~> 1.4"
gem 'eventmachine', "~> 1.2.7"
gem 'faraday', "~> 1.4.3"
gem 'addressable', "~> 2.7.0"
gem 'faraday-net_http_persistent', "~> 1.1.0"
gem 'ruby2_keywords', "~> 0.0.4"
gem 'rubyzip', "~> 2.3.0"
#
gem 'ffi', "~> 1.15.3"
gem 'http_parser.rb', "~> 0.6.0" # requires mkdir in /usr/bin/mkdir
gem "jekyll", "~> 3.9.0"

View File

@@ -1,292 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.6.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2, >= 2.2.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
bigdecimal (1.4.4)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.11.1)
colorator (1.1.0)
commonmarker (0.17.13)
ruby-enum (~> 0.5)
concurrent-ruby (1.2.3)
dnsruby (1.70.0)
simpleidn (~> 0.2.1)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
etc (1.2.0)
ethon (0.16.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
execjs (2.9.1)
faraday (1.4.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
multipart-post (>= 1.2, < 3)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.1.0)
ffi (1.15.5)
forwardable-extended (2.6.0)
gemoji (3.0.1)
github-pages (215)
github-pages-health-check (= 1.17.2)
jekyll (= 3.9.0)
jekyll-avatar (= 0.7.0)
jekyll-coffeescript (= 1.1.1)
jekyll-commonmark-ghpages (= 0.1.6)
jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.15.1)
jekyll-gist (= 1.5.0)
jekyll-github-metadata (= 2.13.0)
jekyll-mentions (= 1.6.0)
jekyll-optional-front-matter (= 0.3.2)
jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.3.0)
jekyll-redirect-from (= 0.16.0)
jekyll-relative-links (= 0.6.1)
jekyll-remote-theme (= 0.4.3)
jekyll-sass-converter (= 1.5.2)
jekyll-seo-tag (= 2.7.1)
jekyll-sitemap (= 1.4.0)
jekyll-swiss (= 1.0.0)
jekyll-theme-architect (= 0.1.1)
jekyll-theme-cayman (= 0.1.1)
jekyll-theme-dinky (= 0.1.1)
jekyll-theme-hacker (= 0.1.2)
jekyll-theme-leap-day (= 0.1.1)
jekyll-theme-merlot (= 0.1.1)
jekyll-theme-midnight (= 0.1.1)
jekyll-theme-minimal (= 0.1.1)
jekyll-theme-modernist (= 0.1.1)
jekyll-theme-primer (= 0.5.4)
jekyll-theme-slate (= 0.1.1)
jekyll-theme-tactile (= 0.1.1)
jekyll-theme-time-machine (= 0.1.1)
jekyll-titles-from-headings (= 0.5.3)
jemoji (= 0.12.0)
kramdown (= 2.3.1)
kramdown-parser-gfm (= 1.1.0)
liquid (= 4.0.3)
mercenary (~> 0.3)
minima (= 2.5.1)
nokogiri (>= 1.10.4, < 2.0)
rouge (= 3.26.0)
terminal-table (~> 1.4)
github-pages-health-check (1.17.2)
addressable (~> 2.3)
dnsruby (~> 1.60)
octokit (~> 4.0)
public_suffix (>= 2.0.2, < 5.0)
typhoeus (~> 1.3)
html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.9.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (>= 1.17, < 3)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-avatar (0.7.0)
jekyll (>= 3.0, < 5.0)
jekyll-coffeescript (1.1.1)
coffee-script (~> 2.2)
coffee-script-source (~> 1.11.1)
jekyll-commonmark (1.3.1)
commonmarker (~> 0.14)
jekyll (>= 3.7, < 5.0)
jekyll-commonmark-ghpages (0.1.6)
commonmarker (~> 0.17.6)
jekyll-commonmark (~> 1.2)
rouge (>= 2.0, < 4.0)
jekyll-default-layout (0.1.4)
jekyll (~> 3.0)
jekyll-feed (0.15.1)
jekyll (>= 3.7, < 5.0)
jekyll-gist (1.5.0)
octokit (~> 4.2)
jekyll-github-metadata (2.13.0)
jekyll (>= 3.4, < 5.0)
octokit (~> 4.0, != 4.4.0)
jekyll-mentions (1.6.0)
html-pipeline (~> 2.3)
jekyll (>= 3.7, < 5.0)
jekyll-optional-front-matter (0.3.2)
jekyll (>= 3.0, < 5.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.3.0)
jekyll (>= 3.0, < 5.0)
jekyll-redirect-from (0.16.0)
jekyll (>= 3.3, < 5.0)
jekyll-relative-links (0.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-remote-theme (0.4.3)
addressable (~> 2.0)
jekyll (>= 3.5, < 5.0)
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
rubyzip (>= 1.3.0, < 3.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-seo-tag (2.7.1)
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-swiss (1.0.0)
jekyll-theme-architect (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-cayman (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-dinky (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-hacker (0.1.2)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-leap-day (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-merlot (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-midnight (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-minimal (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-modernist (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-primer (0.5.4)
jekyll (> 3.5, < 5.0)
jekyll-github-metadata (~> 2.9)
jekyll-seo-tag (~> 2.0)
jekyll-theme-slate (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-tactile (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-time-machine (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-titles-from-headings (0.5.3)
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
jemoji (0.12.0)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
json (2.7.1)
kramdown (2.3.1)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
mini_portile2 (2.8.5)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.21.2)
multipart-post (2.3.0)
nokogiri (1.15.5)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
octokit (4.25.1)
faraday (>= 1, < 3)
sawyer (~> 0.9)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.7)
racc (1.7.3)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (3.26.0)
ruby-enum (0.9.0)
i18n
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
simpleidn (0.2.1)
unf (~> 0.1.4)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (1.2.11)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.9.1)
unicode-display_width (1.8.0)
webrick (1.7.0)
zeitwerk (2.6.12)
PLATFORMS
ruby
x86_64-linux
DEPENDENCIES
addressable (~> 2.7.0)
bigdecimal (~> 1.4)
etc (~> 1.2.0)
eventmachine (~> 1.2.7)
faraday (~> 1.4.3)
faraday-net_http_persistent (~> 1.1.0)
ffi (~> 1.15.3)
github-pages (~> 215)
http_parser.rb (~> 0.6.0)
jekyll (~> 3.9.0)
jekyll-redirect-from (~> 0.16.0)
json (~> 2.2)
ruby2_keywords (~> 0.0.4)
rubyzip (~> 2.3.0)
webrick (~> 1.7.0)
BUNDLED WITH
2.3.26

9
LICENSE Normal file
View File

@@ -0,0 +1,9 @@
MIT License
Copyright (c) 2025 PSI
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,74 +1,50 @@
# HPCE Documentation
This site contains internal documentation of HCPE services at Paul Scherrer Institute, particularly the *Merlin 6* and *Merlin 7* clusters.
Live pages are available at <https://hpce.pages.psi.ch>.
This site contains internal documentation of HCPE services at Paul Scherrer
Institute, particularly the *Merlin 6* and *Merlin 7* clusters. Live pages are
available at <https://hpce.pages.psi.ch>.
## Installation
## Development
### Docker
### Using Docker Compose (Recommended)
The easiest and most reproducable way to test changes is using docker.
From the top directory, run the following:
```bash
# Start the development server
docker compose up
```console
$ docker compose build
$ docker compose up
# Or run in background
docker compose up -d
```
This will start a webserver on `http://0.0.0.0:4001/`. Changes to most pages
will be automatically reflected in the website (with the exception of changes
to `config.yml`, which requires restarting the webserver).
The documentation will be available at `http://localhost:8000`.
### Running locally
> [!NOTE]
> We use several MkDocs plugins, which need to be installed by hand. We do this by
> using a Dockerfile that pulls in the `squidfunk/mkdocs-material` image and runs
> some `pip install` commands. This means that on the first `compose up` call, a
> new docker image will be built locally on your machine.
Building locally requires ruby 2.5 and bundler. To install:
### Deployment
```console
$ gem install bundler jekyll
$ bundle
```
The site is automatically deployed to `https://hpce.pages.psi.ch/` via Gitea Pages.
To run a local webserver:
## Contributing
```console
$ bundle exec jekyll serve
```
Please follow established conventions when adding new documentation:
## Theme
1. Use clear, descriptive filenames
2. Follow the existing directory structure
3. Include appropriate metadata in frontmatter
4. Test locally before committing
The theme is derived from the
[Jekyll Doc Theme 6.0](https://github.com/tomjoht/documentation-theme-jekyll)
by Tom Johnson.
## Repository Structure
### Organization
TBD
- Documentation is organized within the `pages` directory
- Add the following frontmatter to each (Merlin6) page:
## Contact
```md
---
title: Introduction
sidebar: merlin6_sidebar
permalink: /merlin6/introduction.html
keywords: key1, key2
---
```
- Sidebars are specified in data files, e.g. `_data/sidebars/merlin6_sidebar.yml`.
- The top menu is controlled by `_data/topnav.yml`
- News can be addin in `_posts`. Filenames must include the date.
- Lots of features still need to be configured (e.g. pdf output, tags, etc)
- The search bar uses finds substring of the title, tags, keywords, and summary frontmatter.
## Deployment
We use the Gitea workflow (see `.gitea/workflow/deploy-pages.yml` for details). The
pages are automatically re-generated on each push to `master` branch. The resulting website
is stored under the `gitea-pages` branch, and is automatically exposed.
For questions or issues with this documentation, contact the HPCE team.
## License
Theme content is licensed under the MIT license.
The Navgoco jQuery component used in the sidebar is licensed under the BSD
license.
See licenses subdirectory for license terms.

View File

@@ -1,128 +0,0 @@
output: web
# this property is useful for conditional filtering of content that is separate from the PDF.
topnav_title: HPCE@PSI
# this appears on the top navigation bar next to the home button
site_title: HPC and Emerging Technologies Documentation
# this appears in the html browser tab for the site title (seen mostly by search engines, not users)
company_name: Paul Scherrer Institute, CSD/HPC and Emerging Technologies Group
# this appears in the footer
github_editme_path:
# github_editme_path: tomjoht/documentation-theme-jekyll/blob/gh-pages/
# if you're using Github, provide the basepath to the branch you've created for reviews, following the sample here. if not, leave this value blank.
# gitlab_editme_path: tomjoht/documentation-theme-jekyll/blob/gh-pages/
# if you're using GitLab, provide the basepath to the branch you've created for reviews, following the sample here. if not, leave this value blank.
google_analytics:
#google_analytics: UA-66296557-1
# if you have google-analytics ID, put it in. if not, edit this value to blank.
host: 127.0.0.1
# the preview server used. Leave as is.
port: 4001
# the port where the preview is rendered. You can leave this as is unless you have other Jekyll builds using this same port that might cause conflicts. in that case, use another port such as 4006.
exclude:
- README.md
- .idea/
- .gitignore
- vendor
- .vscode
# these are the files and directories that jekyll will exclude from the build
feedback_subject_line: HPCE Documentation feedback
feedback_email: merlin-admins@lists.psi.ch
# feedback_email: tomjoht@gmail.com
# used as a contact email for the Feedback link in the top navigation bar
# feedback_disable: true
# if you uncomment the previous line, the Feedback link gets removed
# feedback_text: "Need help?"
# if you uncomment the previous line, it changes the Feedback text
# feedback_link: "http://helpy.io/"
# if you uncomment the previous line, it changes where the feedback link points to
plugins:
- jekyll-redirect-from
whitelist:
- jekyll-redirect-from
highlighter: rouge
# library used for syntax highlighting
markdown: kramdown
kramdown:
input: GFM
auto_ids: true
hard_wrap: false
syntax_highlighter: rouge
# filter used to process markdown. note that kramdown differs from github-flavored markdown in some subtle ways
collections:
tooltips:
output: false
# collections are declared here. this renders the content in _tooltips and processes it, but doesn't output it as actual files in the output unless you change output to true
defaults:
-
scope:
path: ""
type: "pages"
values:
layout: "page"
comments: true
# if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property
search: true
sidebar: home_sidebar
topnav: topnav
-
scope:
path: ""
type: "tooltips"
values:
layout: "page"
comments: true
# if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property
search: true
tooltip: true
-
scope:
path: ""
type: "posts"
values:
layout: "post"
comments: true
# if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property
search: true
sidebar: home_sidebar
topnav: topnav
# these are defaults used for the frontmatter for these file types
sidebars:
- home_sidebar
- mydoc_sidebar
- product1_sidebar
- product2_sidebar
- other
description: "Merlin is the HPC cluster at Paul Scherrer Institute in Switzerland."
# the description is used in the feed.xml file
# needed for sitemap.xml file only
url: "https://hpce.pages.psi.ch"
baseurl: /
github: [metadata]

View File

@@ -1,15 +0,0 @@
tip: '<div class="alert alert-success" role="alert"><i class="fa fa-check-square-o"></i> <b>Tip: </b>'
note: '<div class="alert alert-info" role="alert"><i class="fa fa-info-circle"></i> <b>Note: </b>'
important: '<div class="alert alert-warning" role="alert"><i class="fa fa-warning"></i> <b>Important: </b>'
warning: '<div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-circle"></i> <b>Warning: </b>'
end: '</div>'
callout_danger: '<div class="bs-callout bs-callout-danger">'
callout_default: '<div class="bs-callout bs-callout-default">'
callout_primary: '<div class="bs-callout bs-callout-primary">'
callout_success: '<div class="bs-callout bs-callout-success">'
callout_info: '<div class="bs-callout bs-callout-info">'
callout_warning: '<div class="bs-callout bs-callout-warning">'
hr_faded: '<hr class="faded"/>'
hr_shaded: '<hr class="shaded"/>'

View File

@@ -1,9 +0,0 @@
elephant: "This is a sample definition."
baseball: "Baseball is considered America's pasttime sport, though that may be more of a historical term than a current one. There's a lot more excitement about football than baseball. A baseball game is somewhat of a snooze to watch, for the most part."
basketball: "Basketball is a sport involving two teams of five players each competing to put a ball through a small circular rim 10 feet above the ground. Basketball requires players to be in top physical condition, since they spend most of the game running back and forth along a 94-foot-long floor."
football: "No doubt the most fun sport to watch, football also manages to accrue the most injuries with the players. From concussions to blown knees, football players have short sport lives."
soccer: "If there's one sport that dominates the world landscape, it's soccer. However, US soccer fans are few and far between. Apart from the popularity of soccer during the World Cup, most people don't even know the name of the professional soccer organization in their area."

View File

@@ -1,11 +0,0 @@
jekyll_platform: "Jekyll is a static site generator that builds sites using most modern web technologies."
fractious: "Like a little mischevious child, full of annoying and constant trouble."
gratuitous: "Something that is unwarranted and uncouth, like the social equivalent of a flagrant foul."
haughty: "Proud and flaunting it. Holding your head high up like a snooty, too-good-for-everything rich person."
impertinent: "Someone acting rude and insensitive to others."
intrepid: "Brave and courageous especially in a difficult, dangerous situation."

View File

@@ -1,107 +0,0 @@
entries:
- title: Sidebar
folders:
- title: Food
folderitems:
- title: Bananas
url: bananas.html
subfolders:
- title: Apples
subfolderitems:
- title: Fuji apples
url: fuji_apples.html
- title: Gala apples
url: gala_apples.html
name:
husband: Tom
wife: Shannon
bikes:
- title: mountain bikes
- title: road bikes
- title: hybrid bikes
salesteams:
- title: Regions
subfolderitems:
- location: US
- location: Spain
- location: France
toc:
- title: Group 1
subfolderitems:
- page: Thing 1
- page: Thing 2
- page: Thing 3
- title: Group 2
subfolderitems:
- page: Piece 1
- page: Piece 2
- page: Piece 3
- title: Group 3
subfolderitems:
- page: Widget 1
- page: Widget 2
- page: Widget 3
something: &hello Greetings earthling!
myref: *hello
about:
- zero
- one
- two
- three
numbercolors:
- zero:
properties: red
- one:
properties: yellow
- two:
properties: green
- three:
properties: blue
mypages:
- section1: Section 1
audience: developers
product: acme
url: facebook.com
- section2: Section 2
audience: writers
product: acme
url: google.com
- section3: Section 3
audience: developers
product: acme
url: amazon.com
- section4: Section 4
audience: writers
product: gizmo
url: apple.com
- section5: Section 5
audience: writers
product: acme
url: microsoft.com
feedback: >
This is my feedback to you.
Even if I include linebreaks here,
all of the linebreaks will be removed when the value is inserted.
block: |
This pipe does something a little different.
It preserves the breaks.
This is really helpful for code samples,
since you can format the code samples with
the appropriate
white spacing.

View File

@@ -1,15 +0,0 @@
# Follow the pattern here for the URLs -- no slash at the beginning, and include the .html. The link here is rendered exactly as is in the Markdown references.
entries:
- product: PSI HPC@CSCS
folders:
- title: Overview
# URLs for top-level folders are optional. If omitted it is a bit easier to toggle the accordion.
folderitems:
- title: Overview
url: /CSCS/index.html
- title: Operations
folderitems:
- title: Transfer Data
url: /CSCS/transfer-data.html

View File

@@ -1,17 +0,0 @@
# Follow the pattern here for the URLs -- no slash at the beginning, and include the .html. The link here is rendered exactly as is in the Markdown references.
entries:
- product: MEG
version:
folders:
- title: Quick Start Guide
folderitems:
- title: Introduction
url: /meg/introduction.html
- title: Support
folderitems:
- title: MeG Migration Guide
url: /meg/migrating.html
- title: Contact
url: /meg/contact.html

View File

@@ -1,5 +0,0 @@
# placed here for translation purposes
search_placeholder_text: search...
search_no_results_text: No results found.

View File

@@ -1,15 +0,0 @@
# Note:
# If you are using the createtag script, don't leave an blank line at the end of this file.
# In other words, the last line must be the last tag in the allowed-tags list.
allowed-tags:
- getting_started
- content_types
- navigation
- formatting
- publishing
- single_sourcing
- special_layouts
- collaboration
- news
- troubleshooting
- mobile

View File

@@ -1,3 +0,0 @@
hpc: "High Performance Computing"
hpce: "High Performance Computing and Emerging Technologies; our group at PSI"
psi: "Paul Scherrer Institute"

View File

@@ -1,36 +0,0 @@
## Topnav single links
## if you want to list an external url, use external_url instead of url. the theme will apply a different link base.
topnav:
- title: Topnav
items:
# - title: GitHub
# external_url: https://github.com/tomjoht/documentation-theme-jekyll
- title: News
url: /news.html
#Topnav dropdowns
topnav_dropdowns:
- title: Topnav dropdowns
folders:
- title: Quick Start
folderitems:
- title: Introduction
url: /merlin6/introduction.html
- title: Requesting Merlin Access
url: /merlin6/request-account.html
- title: Requesting Merlin Projects
url: /merlin6/request-project.html
- title: Accessing the Interactive Nodes
url: /merlin6/interactive.html
- title: Accessing the Slurm Clusters
url: /merlin6/slurm-access.html
- title: Clusters
folderitems:
- title: Merlin 5
url: /merlin5/slurm-configuration.html
- title: Merlin 6
url: /merlin6/slurm-configuration.html
- title: Merlin 6 GPU
url: /gmerlin6/slurm-configuration.html
- title: Merlin 7
url: /merlin7/slurm-configuration.html

View File

@@ -1,15 +0,0 @@
---
layout: default
type: archive
---
<div class="post-header">
<h1 class="post-title-main">{{ page.title }}</h1>
</div>
<div class="post-content">
{{ content }}
</div>

View File

@@ -1,10 +0,0 @@
{% comment %}
A "callout" (section with colored title and left margin)
Parameters:
- type: A bootstrap color for the callout (info, warning, danger, default, success,
and primary
- content: markdown content
{% endcomment -%}
<div markdown="1" class="bs-callout bs-callout-{{include.type}}">{{include.content}}
</div>

View File

@@ -1,19 +0,0 @@
<div class="seriesContext">
<div class="btn-group">
<button type="button" data-toggle="dropdown" class="btn btn-primary dropdown-toggle">Getting Started <span class="caret"></span></button>
<ol class="dropdown-menu">
{% assign pages = site.pages | sort:"weight" %}
{% for p in pages %}
{% if p.series == "Getting Started" %}
{% if p.url == page.url %}
<li class="active"> → {{p.title}}</li>
{% else %}
<li>
<a href="{{p.url | remove: "/"}}">{{p.title}}</a>
</li>
{% endif %}
{% endif %}
{% endfor %}
</ol>
</div>
</div>

View File

@@ -1,10 +0,0 @@
<p>{% assign series_pages = site.tags.series_acme %}
{% for p in pages %}
{% if p.series == "Getting Started" %}
{% assign nextTopic = page.weight | plus: "1" %}
{% if p.weight == nextTopic %}
<a href="{{p.url | remove: "/"}}"><button type="button" class="btn btn-primary">Next: {{p.title}}</button></a>
{% endif %}
{% endif %}
{% endfor %}
</p>

View File

@@ -1,19 +0,0 @@
<div class="seriesContext">
<div class="btn-group">
<button type="button" data-toggle="dropdown" class="btn btn-primary dropdown-toggle">Series Demo <span class="caret"></span></button>
<ol class="dropdown-menu">
{% assign pages = site.pages | sort:"weight" %}
{% for p in pages %}
{% if p.series == "ACME series" %}
{% if p.url == page.url %}
<li class="active"> → {{p.weight}}. {{p.title}}</li>
{% else %}
<li>
<a href="{{p.url | remove: "/"}}">{{p.weight}}. {{p.title}}</a>
</li>
{% endif %}
{% endif %}
{% endfor %}
</ol>
</div>
</div>

View File

@@ -1,30 +0,0 @@
<div class="seriesContext">
<a>
{% assign pages = site.pages | sort:"weight" %}
{% for pg in pages %}
{% if pg.series == "ACME series" %}
{% if pg.weight > page.weight %}
<a href="{{pg.url | remove: '/'}}"><button type="button" class="btn btn-primary">Next: {{pg.title}}</button></a>
{% break %}
{% endif %}
{% endif %}
{% endfor %}
</a>
&nbsp;
<div class="btn-group">
<button type="button" data-toggle="dropdown" class="btn btn-primary dropdown-toggle">Jump to: <span class="caret"></span></button>
<ol class="dropdown-menu">
{% for pg in pages %}
{% if pg.series == "ACME series" %}
{% if pg.url == page.url %}
<li class="active"> → {{pg.weight}}. {{pg.title}}</li>
{% else %}
<li>
<a href="{{pg.url | remove: '/'}}">{{pg.title}}</a>
</li>
{% endif %}
{% endif %}
{% endfor %}
</ol>
</div>
</div>

View File

@@ -1,14 +0,0 @@
<div id="userMap">
<div class="content"><a href="p2_sample1.html"><div class="box box1">Connect to ADB</div></a></div>
<div class="arrow"></div>
<div class="content"><a href="p2_sample2.html"><div class="box box2">Download and Build the Starter Kit</div></a></div>
<div class="arrow"></div>
<div class="content"><a href="p2_sample3.html"><div class="box box3">Take a Tour</div></a></div>
<div class="arrow"></div>
<div class="content"><a href="p2_sample4.html"><div class="box box4">Load Your Widgets</div></a></div>
<div class="arrow"></div>
<div class="content"><a href="p2_sample5.html"><div class="box box5">Query for Something</div></a></div>
<div class="clearfix"></div>
</div>

View File

@@ -1,91 +0,0 @@
<div id="userMap">
<!-- Button trigger modal -->
<button type="button" class="btn btn-default btn-lg modalButton1" data-toggle="modal" data-target="#myModal1">Get Started</button>
<!-- Modal -->
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Get Started</h4>
</div>
<div class="modal-body">
<p>This is just dummy text ... Your first steps should be to get started. You will need to do the following:</p>
<ul>
<li><a href="p2_sample6.html">Sample 6</a></li>
<li><a href="p2_sample7.html">Sample 7</a></li>
<li><a href="p2_sample8.html">Sample 8</a></li>
</ul>
<p>If you run into any of these setup issues, you must solve them before you can continue on.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<span class="complexArrow"></span>
<!-- Button trigger modal -->
<button type="button" class="btn btn-default btn-lg modalButton2" data-toggle="modal" data-target="#myModal2">Build your widgets</button>
<!-- Modal -->
<div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Build your widgets</h4>
</div>
<div class="modal-body">
<p>In this step, you will build the widgets for your system. The widgets form the various components that blah blah blah this is dummy text power the nuclear capabilities of your energy transformer into deep space using wormhole technology and warp drive speeds.</p>
<p>In order to configure your widgets, you will need to follow these topics:</p>
<ul>
<li><a href="p2_sample9.html">Sample 9</a></li>
<li><a href="p2_sample10.html">Sample 10</a></li>
<li><a href="p2_sample11.html">Sample 11</a></li>
</ul>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<span class="complexArrow"></span>
<!-- Button trigger modal -->
<button type="button" class="btn btn-default btn-lg modalButton3" data-toggle="modal" data-target="#myModal3">Publish your app</button>
<!-- Modal -->
<div class="modal fade" id="myModal3" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Publish your app</h4>
</div>
<div class="modal-body">
<p>After you've configured all the necessary components to build your space transformer, you need to publish your app. Of course this content is also just dummy text. Pay no particular attention to the content but rather the format and placement of the map.</p>
<p>To publish your app, see the following:
<ul>
<li><a href="p2_sample12.html">Sample 12</a></li>
<li><a href="p2_sample13.html">Sample 13</a></li>
<li><a href="p2_sample14.html">Sample 14</a></li>
</ul>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>

View File

@@ -1,17 +0,0 @@
{% if site.disqus_shortname %}
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = '{{site.disqus_shortname}}'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}

View File

@@ -1,13 +0,0 @@
<li>
{% if site.feedback_text %}
{% assign feedback_text = site.feedback_text %}
{% else %}
{% assign feedback_text = "Feedback" %}
{% endif %}
{% if site.feedback_link %}
<a class="email" title="Submit feedback" href="{{site.feedback_link}}">{{feedback_text}}</a>
{% else %}
<a class="email" title="Submit feedback" href="#" onclick="javascript:window.location='mailto:{{site.feedback_email}}?subject={{site.feedback_subject_line}} feedback&body=I have some feedback about the {{page.title}} page: ' + window.location.href;"><i class="fa fa-envelope-o"></i> {{feedback_text}}</a>
{% endif %}
</li>

View File

@@ -1,9 +0,0 @@
<footer>
<div class="row">
<div class="col-lg-12 footer">
&copy;{{ site.time | date: "%Y" }} {{site.company_name}}. All rights reserved. <br />
{% if page.last_updated %}<span>Page last updated:</span> {{page.last_updated}}<br/>{% endif %} Site last generated: {{ site.time | date: "%b %-d, %Y" }} <br />
<p><img style="margin-top: 1em;" src="{{ "/images/psi-logo.png"}}" alt="PSI logo"/></p>
</div>
</div>
</footer>

View File

@@ -1,6 +0,0 @@
<!-- the google_analytics_id gets auto inserted from the config file -->
{% if site.google_analytics %}
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','{{site.google_analytics}}','auto');ga('require','displayfeatures');ga('send','pageview');</script>
{% endif %}

View File

@@ -1,43 +0,0 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{% if page.summary %}{{ page.summary | strip_html | strip_newlines | truncate: 160 }}{% endif %}">
<meta name="keywords" content="{{page.tags}}{% if page.tags %}, {% endif %} {{page.keywords}}">
<title>{{ page.title }} | {{ site.site_title }}</title>
<link rel="stylesheet" href="{{ "/css/syntax.css"}}">
<link rel="stylesheet" type="text/css" href="{{ "/css/font-awesome.min.css" }}">
<!--<link rel="stylesheet" type="text/css" href="{{ "/css/bootstrap.min.css"}}">-->
<link rel="stylesheet" href="{{ "/css/modern-business.css"}}">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="{{ "/css/bootstrap.min.css" }}">
<link rel="stylesheet" href="{{ "/css/customstyles.css"}}">
<link rel="stylesheet" href="{{ "/css/boxshadowproperties.css"}}">
<!-- most color styles are extracted out to here -->
<link rel="stylesheet" href="{{ "/css/theme-blue.css"}}">
<script src="{{ "/js/jquery.min.js" }}"></script>
<script src="{{ "/js/jquery.cookie.min.js" }}"></script>
<script src="{{ "/js/jquery.navgoco.min.js"}}"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="/js/bootstrap.min.js"></script>
<!-- Anchor.js -->
<script src="{{ "/js/anchor.min.js" }}"></script>
<script src="{{ "/js/toc.js"}}"></script>
<script src="{{ "/js/customscripts.js"}}"></script>
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="{{ "/js/html5shiv.js" }}"></script>
<script src="{{ "/js/respond.min.js" }}"></script>
<![endif]-->
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.url }}">

View File

@@ -1,28 +0,0 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{% if page.summary %}{{ page.summary | strip_html | strip_newlines | truncate: 160 }}{% endif %}">
<meta name="keywords" content="{{page.tags}}{% if page.tags %}, {% endif %} {{page.keywords}}">
<title>{% if page.homepage == true %} {{site.homepage_title}} {% elsif page.title %}{{ page.title }}{% endif %} | {{ site.site_title }}</title>
<link rel="stylesheet" href="{{ "/css/syntax.css" }}">
<link rel="stylesheet" href="{{ "/css/font-awesome.min.css" }}">
<link rel="stylesheet" href="{{ "/css/bootstrap.min.css" }}">
<link rel="stylesheet" href="{{ "/css/modern-business.css" }}">
<link rel="stylesheet" href="{{ "/css/customstyles.css" }}">
<link rel="stylesheet" href="{{ "/css/theme-blue.css" }}">
<link rel="stylesheet" href="{{ "/css/syntax.css" }}">
<link rel="stylesheet" href="{{ "/css/printstyles.css" }}">
<script>
Prince.addScriptFunc("datestamp", function() {
return "PDF last generated: {{ site.time | date: '%B %d, %Y' }}";
});
</script>
<script>
Prince.addScriptFunc("guideName", function() {
return "{{site.print_title}} User Guide";
});
</script>

View File

@@ -1 +0,0 @@
<figure>{% if {{include.url}} %}<a class="no_icon" target="_blank" rel="noopener" href="{{include.url}}">{% endif %}<img class="docimage" src="{{ "/images/"}}{{include.file}}" alt="{{include.alt}}" {% if {{include.max-width}} %}style="max-width: {{include.max-width}}px"{% endif %} />{% if {{include.url}} %}</a>{% endif %}{% if {{include.caption}} %}<figcaption>{{include.caption}}</figcaption>{% endif %}</figure>

View File

@@ -1 +0,0 @@
<div markdown="1" class="alert alert-warning" role="alert"><i class="fa fa-warning"></i> <b>Important:</b> {{include.content}}</div>

View File

@@ -1,130 +0,0 @@
<script type="text/javascript">
$(document).ready(function() {
$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' });
});
</script>
<!-- shuffle -->
<script>
var shuffleme = (function( $ ) {
'use strict';
var $grid = $('#grid'),
$filterOptions = $('.filter-options'),
$sizer = $grid.find('.shuffle_sizer'),
init = function() {
// None of these need to be executed synchronously
setTimeout(function() {
listen();
setupFilters();
}, 100);
// instantiate the plugin
$grid.shuffle({
itemSelector: '[class*="col-"]',
sizer: $sizer
});
},
// Set up button clicks
setupFilters = function() {
var $btns = $filterOptions.children();
$btns.on('click', function() {
var $this = $(this),
isActive = $this.hasClass( 'active' ),
group = isActive ? 'all' : $this.data('group');
// Hide current label, show current label in title
if ( !isActive ) {
$('.filter-options .active').removeClass('active');
}
$this.toggleClass('active');
// Filter elements
$grid.shuffle( 'shuffle', group );
});
$btns = null;
},
// Re layout shuffle when images load. This is only needed
// below 768 pixels because the .picture-item height is auto and therefore
// the height of the picture-item is dependent on the image
// I recommend using imagesloaded to determine when an image is loaded
// but that doesn't support IE7
listen = function() {
var debouncedLayout = $.throttle( 300, function() {
$grid.shuffle('update');
});
// Get all images inside shuffle
$grid.find('img').each(function() {
var proxyImage;
// Image already loaded
if ( this.complete && this.naturalWidth !== undefined ) {
return;
}
// If none of the checks above matched, simulate loading on detached element.
proxyImage = new Image();
$( proxyImage ).on('load', function() {
$(this).off('load');
debouncedLayout();
});
proxyImage.src = this.src;
});
// Because this method doesn't seem to be perfect.
setTimeout(function() {
debouncedLayout();
}, 500);
};
return {
init: init
};
}( jQuery ));
$(document).ready(function() {
shuffleme.init();
});
</script>
<!-- new attempt-->
<script>
$(document).ready(function() {
/* initialize shuffle plugin */
var $grid = $('#grid');
$grid.shuffle({
itemSelector: '.item' // the selector for the items in the grid
});
});</script>
<script>
$('#filter a').click(function (e) {
e.preventDefault();
// set active class
$('#filter a').removeClass('active');
$(this).addClass('active');
// get group name from clicked item
var groupName = $(this).attr('data-group');
// reshuffle grid
$grid.shuffle('shuffle', groupName );
});</script>

View File

@@ -1 +0,0 @@
<img class="inline" src="{{ "/images/"}}{{include.file}}" alt="{{include.alt}}" />

View File

@@ -1,44 +0,0 @@
{% comment %}Get links from each sidebar, as listed in the _config.yml file under sidebars{% endcomment %}
{% for sidebar in site.sidebars %}
{% for entry in site.data.sidebars[sidebar].entries %}
{% for folder in entry.folders %}
{% for folderitem in folder.folderitems %}
{% if folderitem.url contains "html#" %}
[{{folderitem.url | remove: "/" }}]: {{folderitem.url | remove: "/"}}
{% else %}
[{{folderitem.url | remove: "/" | remove: ".html"}}]: {{folderitem.url | remove: "/"}}
{% endif %}
{% for subfolders in folderitem.subfolders %}
{% for subfolderitem in subfolders.subfolderitems %}
[{{subfolderitem.url | remove: "/" | remove: ".html"}}]: {{subfolderitem.url | remove: "/"}}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
{% comment %} Get links from topnav {% endcomment %}
{% for entry in site.data.topnav.topnav %}
{% for item in entry.items %}
{% if item.external_url == null %}
[{{item.url | remove: "/" | remove: ".html"}}]: {{item.url | remove: "/"}}
{% endif %}
{% endfor %}
{% endfor %}
{% comment %}Get links from topnav dropdowns {% endcomment %}
{% for entry in site.data.topnav.topnav_dropdowns %}
{% for folder in entry.folders %}
{% for folderitem in folder.folderitems %}
{% if folderitem.external_url == null %}
[{{folderitem.url | remove: "/" | remove: ".html"}}]: {{folderitem.url | remove: "/"}}
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}

View File

@@ -1,8 +0,0 @@
{% comment %}
A blue alert box.
Parameters:
- title: Initial word (default "Note")
- content: markdown content
{% endcomment -%}
<div markdown="1" class="alert alert-info" role="alert"><i class="fa fa-info-circle"></i> <b>{{ include.title | default:"Note"}}:</b> {{include.content}}</div>

View File

@@ -1,67 +0,0 @@
{% assign sidebar = site.data.sidebars[page.sidebar].entries %}
<ul id="mysidebar" class="nav">
<li class="sidebarTitle">{{sidebar[0].product}} {{sidebar[0].version}}</li>
{% for entry in sidebar %}
{% for folder in entry.folders %}
{% if folder.output == nil or folder.output contains "web"%}
{% if folder.url != nil and page.url contains folder.url %}
<li class = "active" >
{% else %}
<li>
{% endif %}
<a title="{{folder.title}}" href="{{folder.url | default:"#" }}">{{folder.title}}</a>
<ul>
{% for folderitem in folder.folderitems %}
{% if folderitem.output == nil or folderitem.output contains "web" %}
{% if folderitem.external_url %}
<li><a title="{{folderitem.title}}" href="{{folderitem.external_url}}" target="_blank" rel="noopener">{{folderitem.title}}</a></li>
{% elsif page.url contains folderitem.url %}
<li class="active"><a title="{{folderitem.title}}" href="{{folderitem.url}}">{{folderitem.title}}</a></li>
{% elsif folderitem.type == "empty" %}
<li><a title="{{folderitem.title}}" href="{{folderitem.url}}">{{folderitem.title}}</a></li>
{% else %}
<li><a title="{{folderitem.title}}" href="{{folderitem.url}}">{{folderitem.title}}</a></li>
{% endif %}
{% for subfolders in folderitem.subfolders %}
{% if subfolders.output == nil or subfolders.output contains "web" %}
<li class="subfolders">
<a title="{{subfolders.title}}" href="{{subfolders.url | default:"#" }}">{{ subfolders.title }}</a>
<ul>
{% for subfolderitem in subfolders.subfolderitems %}
{% if subfolderitem.output == nil or subfolderitem.output contains "web" %}
{% if subfolderitem.external_url %}
<li><a title="{{subfolderitem.title}}" href="{{subfolderitem.external_url}}" target="_blank" rel="noopener">{{subfolderitem.title}}</a></li>
{% elsif page.url == subfolderitem.url %}
<li class="active"><a title="{{subfolderitem.title}}" href="{{subfolderitem.url}}">{{subfolderitem.title}}</a></li>
{% else %}
<li><a title="{{subfolderitem.title}}" href="{{subfolderitem.url }}">{{subfolderitem.title}}</a></li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
</ul>
</li>
{% endif %}
{% endfor %}
{% endfor %}
<!-- if you aren't using the accordion, uncomment this block:
<p class="external">
<a href="#" id="collapseAll">Collapse All</a> | <a href="#" id="expandAll">Expand All</a>
</p>
-->
</ul>
<!--
This highlights the active parent class in the navgoco sidebar. This is
critical so that the parent expands when you're viewing a page. This must
appear below the sidebar code above. Otherwise, if placed inside
customscripts.js, the script runs before the sidebar code runs and the
class never gets inserted.
-->
<script>$("li.active").parents('li').addClass("active");</script>

View File

@@ -1,32 +0,0 @@
<p>The following pages and posts are tagged with <button type="button" style="cursor: default" class="btn btn-default navbar-btn">{{page.tagName}}</button></p>
<table><thead><tr><th>Title</th><th>Type</th><th>Excerpt</th></tr></thead>
<tbody>
{% assign thisTag = page.tagName %}
{% for page in site.pages %}
{% for tag in page.tags %}
{% if tag == thisTag %}
<tr><td><a href="{{ page.url | remove: "/" }}">{{page.title}}</a></td>
<td><span class="label label-default">Page</span></td>
<td>{% if page.summary %} {{ page.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ page.content | truncatewords: 50 | strip_html }} {% endif %}</td>
</tr>
{% endif %}
{% endfor %}
{% endfor %}
{% assign thisTag = page.tagName %}
{% for post in site.posts %}
{% for tag in post.tags %}
{% if tag == thisTag %}
<tr><td><a href="{{ post.url | remove: "/" }}">{{post.title}}</a></td>
<td><span class="label label-primary">Post</span></td>
<td>{% if post.summary %} {{ post.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ post.content | truncatewords: 50 | strip_html }} {% endif %}</td>
</tr>
{% endif %}
{% endfor %}
{% endfor %}
</tbody>
</table>

View File

@@ -1 +0,0 @@
<div markdown="1" class="alert alert-success" role="alert"><i class="fa fa-check-square-o"></i> <b>Tip:</b> {{include.content}}</div>

View File

@@ -1,21 +0,0 @@
<!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
<script>
$( document ).ready(function() {
// Handler for .ready() called.
$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' });
/* this offset helps account for the space taken up by the floating toolbar. */
$('#toc').on('click', 'a', function() {
var target = $(this.getAttribute('href'))
, scroll_target = target.offset().top
$(window).scrollTop(scroll_target - 10);
return false
})
});
</script>
<div id="toc"></div>

View File

@@ -1,81 +0,0 @@
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-static-top">
<div class="container topnavlinks">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="fa fa-home fa-lg navbar-brand" href="{{ "/index.html" }}">&nbsp;<span class="projectTitle"> {{site.topnav_title}}</span></a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<!-- toggle sidebar button -->
<li><a id="tg-sb-link" href="#"><i id="tg-sb-icon" class="fa fa-toggle-on"></i> Nav</a></li>
<!-- entries without drop-downs appear here -->
{% assign topnav = site.data[page.topnav] %}
{% assign topnav_dropdowns = site.data[page.topnav].topnav_dropdowns %}
{% for entry in topnav.topnav %}
{% for item in entry.items %}
{% if item.external_url %}
<li><a href="{{item.external_url}}" target="_blank" rel="noopener">{{item.title}}</a></li>
{% elsif page.url contains item.url %}
<li class="active"><a href="{{item.url }}">{{item.title}}</a></li>
{% else %}
<li><a href="{{item.url}}">{{item.title}}</a></li>
{% endif %}
{% endfor %}
{% endfor %}
<!-- entries with drop-downs appear here -->
<!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
{% for entry in topnav_dropdowns %}
{% for folder in entry.folders %}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ folder.title }}<b class="caret"></b></a>
<ul class="dropdown-menu">
{% for folderitem in folder.folderitems %}
{% if folderitem.external_url %}
<li><a href="{{folderitem.external_url}}" target="_blank" rel="noopener">{{folderitem.title}}</a></li>
{% elsif page.url contains folderitem.url %}
<li class="dropdownActive"><a href="{{folderitem.url}}">{{folderitem.title}}</a></li>
{% else %}
<li><a href="{{folderitem.url }}">{{folderitem.title}}</a></li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
{% endfor %}
{% if site.feedback_disable == null or site.feedback_disable == false %}
{% include feedback.html %}
{% endif %}
<!--comment out this block if you want to hide search-->
<li>
<!--start search-->
<div id="search-demo-container">
<input type="text" id="search-input" placeholder="{{site.data.strings.search_placeholder_text}}">
<ul id="results-container"></ul>
</div>
<script src="{{ "/js/jekyll-search.js"}}" type="text/javascript"></script>
<script type="text/javascript">
SimpleJekyllSearch.init({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
dataSource: '{{ "/search.json"}}',
searchResultTemplate: '<li><a href="{url}" title="{{page.title | escape }}">{title}</a></li>',
noResultsText: '{{site.data.strings.search_no_results_text}}',
limit: 10,
fuzzy: true,
})
</script>
<!--end search-->
</li>
</ul>
</div>
</div>
<!-- /.container -->
</nav>

View File

@@ -1,8 +0,0 @@
{% comment %}
A red alert box.
Parameters:
- title: Initial word (default "warning")
- content: markdown content
{% endcomment -%}
<div markdown="1" class="alert alert-danger" role="alert"><i class="fa fa-exclamation-circle"></i> <b>{{include.title | default:"Warning"}}:</b> {{include.content}}</div>

View File

@@ -1,106 +0,0 @@
<!DOCTYPE html>
<html>
<head>
{% include head.html %}
<script>
$(document).ready(function() {
// Initialize navgoco with default options
$("#mysidebar").navgoco({
caretHtml: '',
accordion: true,
openClass: 'active', // open
save: false, // leave false or nav highlighting doesn't work right
cookie: {
name: 'navgoco',
expires: false,
path: '/'
},
slide: {
duration: 400,
easing: 'swing'
}
});
$("#collapseAll").click(function(e) {
e.preventDefault();
$("#mysidebar").navgoco('toggle', false);
});
$("#expandAll").click(function(e) {
e.preventDefault();
$("#mysidebar").navgoco('toggle', true);
});
});
</script>
<script>
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
</script>
<script>
$(document).ready(function() {
$("#tg-sb-link").click(function() {
$("#tg-sb-sidebar").toggle();
$("#tg-sb-content").toggleClass('col-md-9');
$("#tg-sb-content").toggleClass('col-md-12');
$("#tg-sb-icon").toggleClass('fa-toggle-on');
$("#tg-sb-icon").toggleClass('fa-toggle-off');
});
});
</script>
{% if page.datatable == true %}
<!-- Include the standard DataTables bits -->
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.js"></script>
<!-- First, this walks through the tables that occur between ...-begin
and ...-end and add the "datatable" class to them.
Then it invokes DataTable's standard initializer
Credit here: http://www.beardedhacker.com/blog/2015/08/28/add-class-attribute-to-markdown-table/
-->
<script>
$(document).ready(function(){
$('div.datatable-begin').nextUntil('div.datatable-end', 'table').addClass('display');
$('table.display').DataTable( {
paging: true,
stateSave: true,
searching: true
});
});
</script>
{% endif %}
</head>
<body>
{% include topnav.html %}
<!-- Page Content -->
<div class="container">
<div id="main">
<!-- Content Row -->
<div class="row">
{% assign content_col_size = "col-md-12" %}
{% unless page.hide_sidebar %}
<!-- Sidebar Column -->
<div class="col-md-3" id="tg-sb-sidebar">
{% include sidebar.html %}
</div>
{% assign content_col_size = "col-md-9" %}
{% endunless %}
<!-- Content Column -->
<div class="{{content_col_size}}" id="tg-sb-content">
{{content}}
</div>
<!-- /.row -->
</div>
<!-- /.container -->
</div>
<!-- /#main -->
</div>
</body>
{% if site.google_analytics %}
{% include google_analytics.html %}
{% endif %}
</html>

View File

@@ -1,25 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<html>
<head>
{% include head_print.html %}
</head>
<body class="{% if page.type == "title"%}title{% elsif page.type == "frontmatter" %}frontmatter{% elsif page.type == "first_page" %}first_page{% endif %} print">
<!-- Page Content -->
<div class="container">
<!-- Content Column -->
<div class="col-md-9">
{{content}}
</div>
</div> <!-- /.container -->
</body>
</html>

View File

@@ -1,3 +0,0 @@
---
---
{{content}}

View File

@@ -1,68 +0,0 @@
---
layout: default
---
<div class="post-header">
<h1 class="post-title-main">{{ page.title }}</h1>
</div>
{% if page.simple_map == true %}
<script>
$(document).ready ( function(){
$('.box{{page.box_number}}').addClass('active');
});
</script>
{% include custom/{{page.map_name}}.html %}
{% elsif page.complex_map == true %}
<script>
$(document).ready ( function(){
$('.modalButton{{page.box_number}}').addClass('active');
});
</script>
{% include custom/{{page.map_name}}.html %}
{% endif %}
<div class="post-content">
{% if page.summary %}
<div class="summary">{{page.summary}}</div>
{% endif %}
{% unless page.toc == false %}
{% include toc.html %}
{% endunless %}
{% if site.github_editme_path %}
<a target="_blank" rel="noopener" href="https://github.com/{{site.github_editme_path}}{{page.path}}" class="btn btn-default githubEditButton" role="button"><i class="fa fa-github fa-lg"></i> Edit me</a>
{% endif %}
{{content}}
<div class="tags">
{% if page.tags != null %}
<b>Tags: </b>
{% assign projectTags = site.data.tags.allowed-tags %}
{% for tag in page.tags %}
{% if projectTags contains tag %}
<a href="{{ "tag_" | append: tag | append: ".html" }}" class="btn btn-default navbar-btn cursorNorm" role="button">{{page.tagName}}{{tag}}</a>
{% endif %}
{% endfor %}
{% endif %}
</div>
{% include disqus.html %}
</div>
{{site.data.alerts.hr_shaded}}
{% include footer.html %}

View File

@@ -1,15 +0,0 @@
---
layout: default_print
comments: true
---
<div class="post-header">
<h1 class="post-title-main" id="{{page.permalink | replace: '/', '' }}">{{ page.title }}</h1>
</div>
<div class="post-content">
{% if page.summary %}
<div class="summary">{{page.summary}}</div>
{% endif %}
{{ content }}
</div>

View File

@@ -1,39 +0,0 @@
---
layout: default
---
<article class="post" itemscope itemtype="https://schema.org/BlogPosting">
<header class="post-header">
<h1 class="post-title" itemprop="name headline">{{ page.title }}</h1>
<p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time> {% if page.author %}<span itemprop="author" itemscope itemtype="https://schema.org/Person"><span itemprop="name">/ {{ page.author }}</span></span>{% endif %}{% if page.tags != null %}/
{% assign projectTags = site.data.tags.allowed-tags %}
{% for tag in page.tags %}
{% if projectTags contains tag %}
<a href="{{ "tag_" | append: tag | append: ".html"}}">{{tag}}</a>{% unless forloop.last %}, {% endunless%}
{% endif %}
{% endfor %}
{% endif %}
</p>
</header>
<div class="post-content" itemprop="articleBody">
{% if page.summary %}
<div class="summary">{{page.summary}}</div>
{% endif %}
{{ content }}
</div>
</article>
{% include disqus.html %}
{{site.data.alerts.hr_shaded}}
{% include footer.html %}

View File

@@ -1,11 +0,0 @@
---
title: "Merlin 6 documentation available"
published: true
# permalink: samplepost.html
summary: "More pages will be coming soon."
tags: [news, getting_started]
---
Merlin 6 docs are now available at https://hpce.pages.psi.ch/merlin6!
More complete documentation will be coming shortly.

View File

@@ -1,6 +0,0 @@
---
doc_id: baseball
product: mydoc
---
{{site.data.definitions.baseball}}

View File

@@ -1,6 +0,0 @@
---
doc_id: basketball
product: mydoc
---
{{site.data.definitions.basketball}}

View File

@@ -1,6 +0,0 @@
---
doc_id: football
product: mydoc
---
{{site.data.definitions.football}}

View File

@@ -1,6 +0,0 @@
---
doc_id: soccer
product: mydoc
---
{{site.data.definitions.soccer}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

14
compose.yml Normal file
View File

@@ -0,0 +1,14 @@
---
services:
mkdocs:
build: .
# explicitly force live-reloading per https://github.com/squidfunk/mkdocs-material/issues/8478
command: serve --dev-addr=0.0.0.0:8000 --livereload
security_opt:
- no-new-privileges:true
volumes:
- ./:/docs
ports:
- 8000:8000
healthcheck:
test: wget --spider --quiet http://127.0.0.1:8000

View File

@@ -1,54 +0,0 @@
#!/bin/sh
# Using a 'cat' here document, create a file for jekyll
# website containing what's required for tag pages.
# Pass in tag name(s)
# ./createtag linux bsd
CMDLINEPARAM=1 # Takes at least one param.
TAGDIR="pages/tags"
if [ $# -ge $CMDLINEPARAM ]
then
tags=$@
else
echo "Atleast ${CMDLINEPARAM} tag name is required."
exit 1
fi
if [ -d "${TAGDIR}" ]; then
echo "Creating tag(s) for ${tags}"
for tag in ${tags}; do
echo "Title for $tag:"
read title
# Cannot indent here string.
cat <<EOF >"${TAGDIR}/tag_${tag}.md"
---
title: "${title}"
tagName: ${tag}
search: exclude
permalink: tag_${tag}.html
sidebar: mydoc_sidebar
hide_sidebar: true
folder: tags
---
{% include taglogic.html %}
{% include links.html %}
EOF
echo " - ${tag}" >> _data/tags.yml
done
else
echo "Directory ${TAGDIR} doesn't exist or you are not in the top-level directory."
echo "Please run again from the root directory of your project."
exit 1
fi
exit

File diff suppressed because one or more lines are too long

View File

@@ -1,24 +0,0 @@
/* box-shadow fonts return errors with prince, so extracting here to put in web output only */
#search-demo-container ul#results-container {
box-shadow: 2px 3px 2px #dedede;
}
hr.shaded {
box-shadow: inset 0 6px 6px -6px rgba(0,0,0,0.5);
}
.videoThumbs img {
box-shadow: 2px 2px 1px #f0f0f0;
}
.box {
box-shadow: 2px 2px 4px #dedede;
}
@media (max-width: 1200px) {
.navbar-collapse {
box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,89 +0,0 @@
/*!
* Start Bootstrap - Modern Business HTML Template (http://startbootstrap.com)
* Code licensed under the Apache License v2.0.
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
/* Global Styles */
html,
body {
height: 100%;
}
.img-portfolio {
margin-bottom: 30px;
}
.img-hover:hover {
opacity: 0.8;
}
/* Home Page Carousel */
header.carousel {
height: 50%;
}
header.carousel .item,
header.carousel .item.active,
header.carousel .carousel-inner {
height: 100%;
}
header.carousel .fill {
width: 100%;
height: 100%;
background-position: center;
background-size: cover;
}
/* 404 Page Styles */
.error-404 {
font-size: 100px;
}
/* Pricing Page Styles */
.price {
display: block;
font-size: 50px;
line-height: 50px;
}
.price sup {
top: -20px;
left: 2px;
font-size: 20px;
}
.period {
display: block;
font-style: italic;
}
/* Footer Styles */
footer {
margin: 50px 0;
}
/* Responsive Styles */
@media(max-width:991px) {
.client-img,
.img-related {
margin-bottom: 30px;
}
}
@media(max-width:767px) {
.img-portfolio {
margin-bottom: 15px;
}
header.carousel .carousel {
height: 70%;
}
}

View File

@@ -1,159 +0,0 @@
/*body.print .container {max-width: 650px;}*/
body {
font-size:14px;
}
.nav ul li a {border-top:0px; background-color:transparent; color: #808080; }
#navig a[href] {color: #595959 !important;}
table .table {max-width:650px;}
#navig li.sectionHead {font-weight: bold; font-size: 18px; color: #595959 !important; }
#navig li {font-weight: normal; }
#navig a[href]::after { content: leader(".") target-counter(attr(href), page); }
a[href]::after {
content: " (page " target-counter(attr(href), page) ")"
}
a[href^="http:"]::after, a[href^="https:"]::after {
content: "";
}
a[href] {
color: blue !important;
}
a[href*="mailto"]::after, a[data-toggle="tooltip"]::after, a[href].noCrossRef::after {
content: "";
}
@page {
margin: 60pt 90pt 60pt 90pt;
font-family: sans-serif;
font-style:none;
color: gray;
}
.printTitle {
line-height:30pt;
font-size:27pt;
font-weight: bold;
letter-spacing: -.5px;
margin-bottom:25px;
}
.printSubtitle {
font-size: 19pt;
color: #cccccc !important;
font-family: "Grotesque MT Light";
line-height: 22pt;
letter-spacing: -.5px;
margin-bottom:20px;
}
.printTitleArea hr {
color: #999999 !important;
height: 2px;
width: 100%;
}
.printTitleImage {
max-width:300px;
margin-bottom:200px;
}
.printTitleImage {
max-width: 250px;
}
#navig {
/*page-break-before: always;*/
}
.copyrightBoilerplate {
page-break-before:always;
font-size:14px;
}
.lastGeneratedDate {
font-style: italic;
font-size:14px;
color: gray;
}
.alert a {
text-decoration: none !important;
}
body.title { page: title }
@page title {
@top-left {
content: " ";
}
@top-right {
content: " "
}
@bottom-right {
content: " ";
}
@bottom-left {
content: " ";
}
}
body.frontmatter { page: frontmatter }
body.frontmatter {counter-reset: page 1}
@page frontmatter {
@top-left {
content: prince-script(guideName);
}
@top-right {
content: prince-script(datestamp);
}
@bottom-right {
content: counter(page, lower-roman);
}
@bottom-left {
content: "youremail@domain.com"; }
}
body.first_page {counter-reset: page 1}
h1 { string-set: doctitle content() }
@page {
@top-left {
content: string(doctitle);
font-size: 11px;
font-style: italic;
}
@top-right {
content: prince-script(datestamp);
font-size: 11px;
}
@bottom-right {
content: "Page " counter(page);
font-size: 11px;
}
@bottom-left {
content: prince-script(guideName);
font-size: 11px;
}
}
.alert {
background-color: #fafafa !important;
border-color: #dedede !important;
color: black;
}
pre {
background-color: #fafafa;
}

View File

@@ -1,60 +0,0 @@
.highlight { background: #ffffff; }
.highlight .c { color: #999988; font-style: italic } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { font-weight: bold } /* Keyword */
.highlight .o { font-weight: bold } /* Operator */
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #999999 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { font-weight: bold } /* Keyword.Constant */
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #009999 } /* Literal.Number */
.highlight .s { color: #d14 } /* Literal.String */
.highlight .na { color: #008080 } /* Name.Attribute */
.highlight .nb { color: #0086B3 } /* Name.Builtin */
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
.highlight .no { color: #008080 } /* Name.Constant */
.highlight .ni { color: #800080 } /* Name.Entity */
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
.highlight .nn { color: #555555 } /* Name.Namespace */
.highlight .nt { color: #000080 } /* Name.Tag */
.highlight .nv { color: #008080 } /* Name.Variable */
.highlight .ow { font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #009999 } /* Literal.Number.Float */
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
.highlight .sc { color: #d14 } /* Literal.String.Char */
.highlight .sd { color: #d14 } /* Literal.String.Doc */
.highlight .s2 { color: #d14 } /* Literal.String.Double */
.highlight .se { color: #d14 } /* Literal.String.Escape */
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
.highlight .si { color: #d14 } /* Literal.String.Interpol */
.highlight .sx { color: #d14 } /* Literal.String.Other */
.highlight .sr { color: #009926 } /* Literal.String.Regex */
.highlight .s1 { color: #d14 } /* Literal.String.Single */
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #008080 } /* Name.Variable.Class */
.highlight .vg { color: #008080 } /* Name.Variable.Global */
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */

View File

@@ -1,121 +0,0 @@
.summary {
color: #808080;
border-left: 5px solid #ED1951;
font-size:16px;
}
h3 {color: #ED1951; }
h4 {color: #808080; }
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
background-color: #248ec2;
color: white;
}
.nav > li.active > a {
background-color: #347DBE;
}
.nav > li > a:hover {
background-color: #248ec2;
}
div.navbar-collapse .dropdown-menu > li > a:hover {
background-color: #347DBE;
}
.nav li.thirdlevel > a {
background-color: #FAFAFA !important;
color: #248EC2;
font-weight: bold;
}
a[data-toggle="tooltip"] {
color: #649345;
font-style: italic;
cursor: default;
}
.navbar-inverse {
background-color: #347DBE;
border-color: #015CAE;
}
.navbar-inverse .navbar-nav>li>a, .navbar-inverse .navbar-brand {
color: white;
}
.navbar-inverse .navbar-nav>li>a:hover, a.fa.fa-home.fa-lg.navbar-brand:hover {
color: #f0f0f0;
}
a.navbar-brand:hover {
color: #f0f0f0;
}
.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
color: #015CAE;
}
.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
background-color: #015CAE;
color: #ffffff;
}
.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
border-color: #248ec2 !important;
}
.btn-primary {
color: #ffffff;
background-color: #347DBE;
border-color: #347DBE;
}
.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
background-color: #347DBE;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.open .dropdown-toggle.btn-primary {
background-color: #248ec2;
border-color: #347DBE;
}
.printTitle {
color: #015CAE !important;
}
body.print h1 {color: #015CAE !important; font-size:28px !important;}
body.print h2 {color: #595959 !important; font-size:20px !important;}
body.print h3 {color: #E50E51 !important; font-size:14px !important;}
body.print h4 {color: #679DCE !important; font-size:14px; font-style: italic !important;}
.anchorjs-link:hover {
color: #216f9b;
}
div.sidebarTitle {
color: #015CAE;
}
li.sidebarTitle {
margin-top:20px;
font-weight:normal;
font-size:130%;
color: #ED1951;
margin-bottom:10px;
margin-left: 5px;
}
.navbar-inverse .navbar-toggle:focus, .navbar-inverse .navbar-toggle:hover {
background-color: #015CAE;
}
.navbar-inverse .navbar-toggle {
border-color: #015CAE;
}

View File

@@ -1,110 +0,0 @@
.summary {
color: #808080;
border-left: 5px solid #E50E51;
font-size:16px;
}
h3 {color: #E50E51; }
h4 {color: #808080; }
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
background-color: #248ec2;
color: white;
}
.nav > li.active > a {
background-color: #72ac4a;
}
.nav > li > a:hover {
background-color: #72ac4a;
}
div.navbar-collapse .dropdown-menu > li > a:hover {
background-color: #72ac4a;
}
.navbar-inverse .navbar-nav>li>a, .navbar-inverse .navbar-brand {
color: white;
}
.navbar-inverse .navbar-nav>li>a:hover, a.fa.fa-home.fa-lg.navbar-brand:hover {
color: #f0f0f0;
}
.nav li.thirdlevel > a {
background-color: #FAFAFA !important;
color: #72ac4a;
font-weight: bold;
}
a[data-toggle="tooltip"] {
color: #649345;
font-style: italic;
cursor: default;
}
.navbar-inverse {
background-color: #72ac4a;
border-color: #5b893c;
}
.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
color: #5b893c;
}
.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus {
background-color: #5b893c;
color: #ffffff;
}
/* not sure if using this ...*/
.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
border-color: #72ac4a !important;
}
.btn-primary {
color: #ffffff;
background-color: #5b893c;
border-color: #5b893c;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.open .dropdown-toggle.btn-primary {
background-color: #72ac4a;
border-color: #5b893c;
}
.printTitle {
color: #5b893c !important;
}
body.print h1 {color: #5b893c !important; font-size:28px;}
body.print h2 {color: #595959 !important; font-size:24px;}
body.print h3 {color: #E50E51 !important; font-size:14px;}
body.print h4 {color: #679DCE !important; font-size:14px; font-style: italic;}
.anchorjs-link:hover {
color: #4f7233;
}
div.sidebarTitle {
color: #E50E51;
}
li.sidebarTitle {
margin-top:20px;
font-weight:normal;
font-size:130%;
color: #ED1951;
margin-bottom:10px;
margin-left: 5px;
}
.navbar-inverse .navbar-toggle:focus, .navbar-inverse .navbar-toggle:hover {
background-color: #E50E51;
}

View File

@@ -1,10 +0,0 @@
services:
server:
build:
context: .
dockerfile: Dockerfile
image: userdoc/latest
ports:
- "4001:4001"
volumes:
- ".:/src"

View File

@@ -1,14 +1,4 @@
---
title: PSI HPC@CSCS
#tags:
#keywords:
last_updated: 20 Nov 2025
#summary: ""
sidebar: CSCS_sidebar
permalink: /CSCS/index.html
---
## PSI HPC@CSCS
# PSI HPC@CSCS
PSI has a long standing collaboration with CSCS for offering high end
HPC resources to PSI projects. PSI had co-invested in CSCS' initial
@@ -22,24 +12,32 @@ schemes.](https://www.cscs.ch/user-lab/allocation-schemes).
We can also help PSI groups to procure additional resources based on
the PSI conditions - please contact us in such a case.
### Yearly survey for requesting a project on the PSI share
## Yearly survey for requesting a project on the PSI share
At the end of each year we prepare a survey process and notify all subscribed users of the specialized **PSI HPC@CSCS mailing list** (see below) and the merlin cluster lists, to enter their next year resource requests. Projects receive resources in the form of allocations over the four quarters of the following year.
At the end of each year we prepare a survey process and notify all subscribed
users of the specialized **PSI HPC@CSCS mailing list** (see below) and the
merlin cluster lists, to enter their next year resource requests. Projects
receive resources in the form of allocations over the four quarters of the
following year.
The projects requests get reviewed and requests may get adapted to fit into the available capacity.
The projects requests get reviewed and requests may get adapted to fit into the
available capacity.
The survey is done through ServiceNow, please navigate to [Home > Service Catalog > Research Computing > Apply for computing resources at CSCS](https://psi.service-now.com/psisp?id=psi_new_sc_cat_item&sys_id=8d14bd1e4f9c7b407f7660fe0310c7e9) and submit the form.
The survey is done through ServiceNow, please navigate to
[Home > Service Catalog > Research Computing > Apply for computing resources at CSCS](https://psi.service-now.com/psisp?id=psi_new_sc_cat_item&sys_id=8d14bd1e4f9c7b407f7660fe0310c7e9)
and submit the form.
Applications will be reviewed and the final resource allocations, in case of oversubscription, will be arbitrated by a panel within CSD.
Applications will be reviewed and the final resource allocations, in case of
oversubscription, will be arbitrated by a panel within CSD.
#### Instructions for filling out the 2026 survey
### Instructions for filling out the 2026 survey
* We have a budget of 100 kCHF for 2026, which translates to 435'000 multicore node hours or 35'600 node hours on the GPU Grace Hopper nodes. The minimum allocation is 10'000 node hours for multicore projects, an average project allocation would amount to 30'000 node hours
* You need to specify the total resource request for your project in node hours, and how you would like to split the resources over the 4 quarters. For the allocations per quarter year, please enter the number in percent (e.g. 25%, 25%, 25%, 25%). If you indicate nothing, a 25% per quarter will be assumed.
* We currently have a total of 65 TB of storage for all projects. Additional storage
can be obtained, but large storage assignments are not in scope for these projects.
### CSCS Systems reference information
## CSCS Systems reference information
For 2025 we can offer access to [CSCS Alps](https://www.cscs.ch/computers/alps) Eiger (CPU multicore) and Daint (GPU) systems.
@@ -50,7 +48,7 @@ For 2025 we can offer access to [CSCS Alps](https://www.cscs.ch/computers/alps)
## Contact information
* PSI Contacts:
* PSI Contacts:
* Mailing list contact: <psi-hpc-at-cscs-admin@lists.psi.ch>
* Marc Caubet Serrabou <marc.caubet@psi.ch>
* Derek Feichtinger <derek.feichtinger@psi.ch>

View File

@@ -1,14 +1,4 @@
---
title: Transferring Data betweem PSI and CSCS
#tags:
keywords: CSCS, data-transfer
last_updated: 02 March 2022
summary: "This Document shows the procedure for transferring data between CSCS and PSI"
sidebar: CSCS_sidebar
permalink: /CSCS/transfer-data.html
---
# Transferring Data
# Transferring Data
This document shows how to transfer data between PSI and CSCS by using a Linux workstation.
@@ -37,7 +27,6 @@ Host *.cscs.ch
There are many different SSH settings available which would allow advanced configurations.
Users may have some configurations already present, therefore would need to adapt it accordingly.
## Transferring files
Once the above configuration is set, then try to rsync from Merlin to CSCS, on any direction:

View File

@@ -37,10 +37,10 @@ independently to ease access for the users and keep independent user accounting.
The following image shows the Merlin6 cluster architecture diagram:
![Merlin6 Architecture Diagram]({{ "/images/merlinschema3.png" }})
![Merlin6 Architecture Diagram](../images/merlinschema3.png)
### Merlin5 + Merlin6 Slurm Cluster Architecture Design
The following image shows the Slurm architecture design for the Merlin5 & Merlin6 clusters:
![Merlin6 Slurm Architecture Design]({{ "/images/merlin-slurm-architecture.png" }})
![Merlin6 Slurm Architecture Design](../images/merlin-slurm-architecture.png)

View File

@@ -120,15 +120,15 @@ The below table summarizes the hardware setup for the Merlin6 GPU computing node
### Login Nodes
The login nodes are part of the **[Merlin6](/merlin6/introduction.html)** HPC cluster,
The login nodes are part of the **[Merlin6](../merlin6/cluster-introduction.md)** HPC cluster,
and are used to compile and to submit jobs to the different ***Merlin Slurm clusters*** (`merlin5`,`merlin6`,`gmerlin6`,etc.).
Please refer to the **[Merlin6 Hardware Documentation](/merlin6/hardware-and-software.html)** for further information.
Please refer to the **[Merlin6 Hardware Documentation](../merlin6/hardware-and-software-description.md)** for further information.
### Storage
The storage is part of the **[Merlin6](/merlin6/introduction.html)** HPC cluster,
The storage is part of the **[Merlin6](../merlin6/cluster-introduction.md)** HPC cluster,
and is mounted in all the ***Slurm clusters*** (`merlin5`,`merlin6`,`gmerlin6`,etc.).
Please refer to the **[Merlin6 Hardware Documentation](/merlin6/hardware-and-software.html)** for further information.
Please refer to the **[Merlin6 Hardware Documentation](../merlin6/hardware-and-software-description.md)** for further information.
### Network
@@ -142,7 +142,7 @@ ibstat | grep Rate
## Software
In the Merlin6 GPU computing nodes, we try to keep software stack coherency with the main cluster [Merlin6](/merlin6/index.html).
In the Merlin6 GPU computing nodes, we try to keep software stack coherency with the main cluster [Merlin6](../merlin6/index.md).
Due to this, the Merlin6 GPU nodes run:
* [**RedHat Enterprise Linux 7**](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.9_release_notes/index)

View File

@@ -24,8 +24,8 @@ The table below shows a summary of the hardware setup for the different GPU node
| merlin-g-015 | 1 core | 48 cores | 1 | 5120 | 360448 | 360448 | 10000 | **A5000** | 1 | 8 |
| merlin-g-100 | 1 core | 128 cores | 2 | 3900 | 998400 | 998400 | 10000 | **A100** | 1 | 8 |
{{site.data.alerts.tip}}Always check <b>'/etc/slurm/gres.conf'</b> and <b>'/etc/slurm/slurm.conf'</b> for changes in the GPU type and details of the hardware.
{{site.data.alerts.end}}
!!! tip
Always check `/etc/slurm/gres.conf` and `/etc/slurm/slurm.conf` for changes in the GPU type and details of the hardware.
## Running jobs in the 'gmerlin6' cluster

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 508 KiB

After

Width:  |  Height:  |  Size: 508 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Some files were not shown because too many files have changed in this diff Show More