Welcome to the Ultimate Guide to Mladinska Liga Slovenia Football
    Discover the heart-pounding excitement of Slovenia's premier youth football league, Mladinska Liga Slovenia. Every day, fresh matches unfold, offering a treasure trove of opportunities for enthusiasts and bettors alike. Our platform provides expert betting predictions, ensuring you stay ahead in the game. Dive into the world of football where passion meets precision, and every match is a new chapter in this thrilling saga.
    Understanding Mladinska Liga Slovenia
    Mladinska Liga Slovenia is not just a league; it's a breeding ground for future football stars. Established to nurture young talent, the league brings together teams from across Slovenia, each eager to make their mark. The league's structure ensures competitive play, with teams vying for supremacy on the pitch. Whether you're a seasoned fan or new to Slovenian football, there's something here for everyone.
    
    Daily Match Updates: Stay Informed Every Day
    Our platform offers daily updates on all matches in the Mladinska Liga Slovenia. With real-time information at your fingertips, you'll never miss a beat. Each update includes detailed match reports, player statistics, and expert analysis. Whether you're following your favorite team or exploring new ones, our comprehensive coverage ensures you're always in the loop.
    Expert Betting Predictions: Your Edge in Betting
    Betting on football can be exhilarating, but it requires insight and strategy. Our expert predictions provide you with the edge you need to make informed bets. Our team of analysts uses advanced algorithms and deep football knowledge to forecast match outcomes with precision. From underdog victories to expected wins, our predictions cover all bases.
    
        - Statistical Analysis: We delve into historical data and current form to predict match outcomes.
- Expert Insights: Our analysts bring years of experience and passion for football to their predictions.
- Real-Time Updates: Stay updated with the latest changes in team line-ups and strategies.
The Teams: A Closer Look at Mladinska Liga Slovenia
    Mladinska Liga Slovenia boasts a diverse array of teams, each with its unique style and strengths. From established clubs nurturing their youth squads to smaller teams with big ambitions, the league is a melting pot of talent and potential. Let's take a closer look at some of the standout teams:
    
        - NK Maribor: Known for its strong youth academy, NK Maribor consistently produces top-tier talent.
- Olimpija Ljubljana: With a rich history in Slovenian football, Olimpija Ljubljana's youth team is always one to watch.
- NK Celje: A team that prides itself on discipline and tactical prowess, NK Celje is a formidable opponent.
Match Highlights: Memorable Moments from Recent Games
    Every match in Mladinska Liga Slovenia has its share of memorable moments. From last-minute goals to stunning saves, these highlights capture the essence of youth football. Here are some standout moments from recent games:
    
        - A spectacular overhead kick by NK Maribor's star striker that left fans in awe.
- An incredible defensive display by Olimpija Ljubljana that secured a crucial win.
- A thrilling penalty shootout that kept fans on the edge of their seats until the final whistle.
Player Profiles: Rising Stars of Mladinska Liga Slovenia
    The future of football lies in the hands of these young talents. Get to know some of the rising stars making waves in Mladinska Liga Slovenia:
    
        - Luka Jovic: Known for his incredible speed and agility, Luka is a winger who can change the course of a game in an instant.
- Milan Badelj: A midfield maestro with exceptional vision and passing ability, Milan is already drawing attention from top clubs.
- Ivan Perisic: With his powerful shot and versatility on the field, Ivan is a player to watch out for.
The Art of Betting: Tips and Strategies
    Betting on football is as much an art as it is a science. To enhance your betting experience, consider these tips and strategies:
    
        - Research Thoroughly: Understand team form, head-to-head records, and player availability before placing bets.
- Diversify Your Bets: Spread your bets across different matches to minimize risk and maximize potential returns.
- Set a Budget: Always bet within your means and avoid chasing losses.
- Stay Updated: Keep track of last-minute changes that could affect match outcomes.
The Role of Youth Leagues in Developing Football Talent
    Youth leagues like Mladinska Liga Slovenia play a crucial role in developing future football stars. They provide young players with the opportunity to hone their skills in a competitive environment. Coaches focus on technical development, tactical understanding, and physical conditioning, preparing players for the challenges of professional football.
    In addition to skill development, youth leagues foster teamwork and sportsmanship. Players learn valuable life lessons such as discipline, perseverance, and respect for opponents. These qualities are essential not only on the field but also off it.
    The Future of Mladinska Liga Slovenia: Trends and Predictions
    The future looks bright for Mladinska Liga Slovenia as it continues to grow in popularity and prestige. Several trends are shaping the league's trajectory:
    
        - Increase in Sponsorships: More brands are recognizing the value of investing in youth football, leading to increased funding and resources for teams.
- Tech Integration: Advanced technology is being integrated into training and match analysis, enhancing player development and fan engagement.
- Talent Export: As more players gain international recognition, there is potential for increased exports to top European leagues.
Fan Engagement: How You Can Get Involved
michael-ruhl/fv3gfs-mkdocs<|file_sep|>/docs/develop/fv3gfs-workflow.md
# FV3GFS Workflow
The following documents describe the current recommended workflow for developing within FV3GFS.
- [The Workflow](#the-workflow)
  - [Developing New Features](#developing-new-features)
  - [Bug Fixes](#bug-fixes)
  - [Refactoring Existing Code](#refactoring-existing-code)
  - [Modifying Tests](#modifying-tests)
  - [Working with Git](#working-with-git)
- [Submitting Pull Requests](#submitting-pull-requests)
- [Code Review Process](#code-review-process)
## The Workflow
The FV3GFS workflow has been designed around two main goals:
1) Make it easy for developers (even those new to FV3GFS) to contribute code.
1) Ensure that all code is reviewed by multiple people before merging into `main`.
The process described below will guide developers through making changes
to FV3GFS codebase while satisfying both goals.
### Developing New Features
1) Create an issue describing your new feature.
1) Discuss proposed implementation details with other developers.
1) Create a branch based off `main` named `/-`
1) Write code implementing your feature.
1) Add unit tests validating your new feature.
1) Update documentation as needed.
1) Push changes up to GitHub.
### Bug Fixes
1) Create an issue describing your bug fix.
1) Discuss proposed implementation details with other developers.
1) Create a branch based off `main` named `/-`
1) Write code implementing your bug fix.
1) Add unit tests validating your bug fix.
1) Update documentation as needed.
1) Push changes up to GitHub.
### Refactoring Existing Code
Refactoring existing code requires additional care because it can potentially introduce
new bugs into existing code.
1) Create an issue describing your refactoring plan.
1) Discuss proposed implementation details with other developers.
1) Create two branches based off `main`, one named `/-`
and one named `/--tests`.
1) On `/--tests`:
   - Add unit tests that validate existing functionality that will be affected by
     your refactoring (if possible).
   - Push changes up to GitHub.
   - Request code review on GitHub.
   - Once approved merge branch into `main`.
   - If you were unable to add tests validate existing functionality using
     manual testing (i.e., running examples).
   - Request code review on GitHub.
   - Once approved merge branch into `main`.
1) On `/-`:
   - Make necessary refactoring changes.
   - Push changes up to GitHub.
   - Request code review on GitHub.
### Modifying Tests
Tests should only be modified if they do not pass due to unrelated changes made since
the test was last run (i.e., regression).
1) Create an issue describing why you need to modify existing tests.
1) Discuss proposed implementation details with other developers.
1) Create two branches based off `main`, one named `/-`
and one named `/--code`.
1) On `/-`:
   - Modify existing tests as needed so they pass (i.e., revert changes made since last passing commit).
   - Push changes up to GitHub.
   - Request code review on GitHub.
   - Once approved merge branch into `main`.
1) On `/--code`:
   - Make necessary modifications so tests pass (i.e., make related changes from when tests were last passing).
   - Push changes up to GitHub.
   - Request code review on GitHub.
### Working with Git
All work should be done on branches created off `main`. Branches should be deleted after merging into `main`.
It is recommended that all developers use [`hub`](https://github.com/github/hub)
to interact with git remotes because it makes certain operations easier.
Use `hub` instead of git commands like:
- `git clone` -> `hub clone`
- `git pull` -> `hub pull`
- `git push` -> `hub push`
- `git pull-request` -> `hub pull-request`
To create branches:
bash
hub checkout main
hub checkout -b $BRANCH_NAME
To push branches:
bash
hub push --set-upstream origin $BRANCH_NAME
To delete branches:
bash
hub push --delete origin $BRANCH_NAME
## Submitting Pull Requests
All pull requests must be associated with an issue describing what they do,
why they are necessary,
and any relevant discussion regarding how they were implemented.
Pull requests should only be submitted once all work has been completed (i.e.,
all tests pass,
documentation has been updated,
etc.).
Pull requests will automatically be assigned two reviewers who will request further modifications if necessary.
## Code Review Process
The goal of this process is ensure all pull requests are reviewed by at least two people before merging into `main`.
When creating or reviewing pull requests follow these guidelines:
- Reviewers should always focus on whether or not functionality works as intended rather than stylistic choices unless they break functionality or make it difficult to read.
- If multiple reviewers are assigned they should discuss any disagreements between them before approving/rejecting pull requests.<|repo_name|>michael-ruhl/fv3gfs-mkdocs<|file_sep|>/docs/overview/what-is-fv3gfs.md
# What is FV3GFS?
FV3GFS is a weather forecasting system based around FV3 dynamical core coupled via GRIB API to GFDL's Global Forecast System (GFS).
It aims at producing operational forecasts at GFS resolution (~13km horizontal grid spacing).
## History
FV3GFS began as part of NOAA's next generation global forecast system project ([NGGPS](https://www.nco.ncep.noaa.gov/newsletters/2017/20170518.html)).
It was first run during NOAA/NCEP/GFDL's August 2017 Global Forecast System Forecast Experiment (GFSEXP).
Since then it has gone through numerous improvements which have made it ready for operational use.
FV3GFS was run operationally at GFDL from January 2019 through March 2020 when it was retired due budgetary constraints.
In January 2020 NCEP began operational runs using FV3GFS dynamical core coupled via GRIB API ([NAFEX](https://www.nco.ncep.noaa.gov/newsletters/2020/20200106.html)).
In June 2020 NCEP began using FV3GFS dynamical core directly coupled via its coupler ([NAFEX](https://www.nco.ncep.noaa.gov/newsletters/2020/20200602.html)).
## Implementation Details
FV3GFS uses Fortran90 compiled via Intel compiler suite,
with OpenMP used for shared memory parallelization,
and MPI used for distributed memory parallelization.
FV3GFS has been developed using [`git`](https://git-scm.com/)
and hosted on [`GitHub`](https://github.com/NOAA-GFDL/FV3-GFS),
using [`Travis`](https://travis-ci.org/) for continuous integration testing,
and [`Codecov`](https://codecov.io/) for test coverage tracking.<|file_sep|># Quickstart Guide
This quickstart guide will walk you through setting up your development environment,
cloning down FV3GFS repository,
and running an example simulation using conda-managed dependencies.
## Prerequisites
You will need:
- A UNIX-like operating system (e.g., Linux or macOS).
- [`git`](https://git-scm.com/) installed (for cloning down repository).
- [`conda`](https://docs.conda.io/en/latest/) installed (for managing dependencies).
## Setting Up Development Environment
Clone down this repository:
bash
git clone https://github.com/NOAA-GFDL/FV3-GFS.git fv3gfs
cd fv3gfs
Create conda environment:
bash
conda env create --file environments/dev.yml --name fv3gfs-dev
Activate conda environment:
bash
conda activate fv3gfs-dev
Install conda-forge channel:
bash
conda config --add channels conda-forge
Install MPI library (required by FV3):
bash
conda install openmpi=4.*
Clone down FV3 repository:
bash
git clone https://github.com/NOAA-GFDL/FV3.git fv3-gfs-fv3-library
cd fv3-gfs-fv3-library/build_scripts/
./install.sh intel openmpi $CONDA_PREFIX/lib/openmpi/
cd ../..
Clone down GMAO_Shared repository:
bash
git clone https://github.com/GMAO-ESM/GMAO_Shared.git gmao_shared-gfs-shared-libraries
cd gmao_shared-gfs-shared-libraries/build_scripts/
./install.sh intel openmpi $CONDA_PREFIX/lib/openmpi/
cd ../..
Install CMake (required by build scripts):
bash
conda install cmake=*
Clone down GMAO_ExpRepos repository:
bash
git clone https://github.com/GMAO-ESM/GMAO_ExpRepos.git gmao_exp_repos-gfs-experimental-repositories-for-testing-and-development-purposes-only-not-for-production-use-in-any-form-
cd gmao_exp_repos-gfs-experimental-repositories-for-testing-and-development-purposes-only-not-for-production-use-in-any-form-/build_scripts/
./install.sh intel openmpi $CONDA_PREFIX/lib/openmpi/
cd ../..
Install Python dependencies:
bash
pip install .
## Running Examples
Run single timestep initialization example:
bash
python scripts/examples/single_timestep_initialization.py --fv_core_config_path configs/single_timestep_initialization_fv_core.yml --fv_srf_config_path configs/single_timestep_initialization_fv_srf.yml --fv_gfs_physics_config_path configs/single_timestep_initialization_fv_gfs_physics.yml --fv_core_nml_path configs/single_timestep_initialization_fv_core_nml.yml --fv_tracer_nml_path configs/single_timestep_initialization_fv_tracer_nml.yml --fv_gfs_physics_nml_path configs/single_timestep_initialization_fv_gfs_physics_nml.yml --fv_srf_nml_path configs/single_timestep_initialization_fv_srf_nml.yml --work_dir work_dirs/single_timestep_initialization --restart_dir work_dirs/single_timestep_initialization/restart --output_dir work_dirs/single_timestep_initialization/output --log_file work_dirs/single_timestep_initialization/log.txt --machine mpiexec.hydra --machine_args '-np 4'
Run multi-timestep initialization example:
bash
python scripts/examples/multi_timestep_initialization.py --fv_core_config_path configs/multi_timestep_initialization_fv_core.yml --fv_srf_config_path configs/multi_timestep_initialization_fv_srf.yml --fv_gfs_physics_config_path configs/multi_timestep_initialization_fv_gfs_physics.yml --fv_core_nml_path configs/multi_timestep_initialization_f