"""
GenVxMask: Solar Altitude
=========================

model_applications/space_weather/GenVxMask_fcstGloTEC_solar_altitude.conf

"""
##############################################################################
# .. contents::
#   :depth: 1
#   :local:
#   :backlinks: none

##############################################################################
# Overview
# --------
#
# This use case illustrates the use of the gen_vx_mask tool for the space weather domain.
# It creates a mask for region where the solar altitude angle is less than 45 degrees
# (low sun angle or sun below the horizon), only letting data through for the region
# where the sun is high in the sky (i.e., solar altitude angle greater than 45 degrees).
#
# In this use case, the input data is the GloTEC model run assimilated with COSMIC-1 RO data.
#
# This use case runs gen_vx_mask for a couple forecast times from a
# space weather event known as the St. Patrick's Day Storm (Mar 17, 2015).
#
# Novel aspects of this use case:
#   - First example use case to run gen_vx_mask on a space weather model (GloTEC)
#   - Example of how to run gen_vx_mask on NetCDF input data which do not strictly conform to the
#     Climate Forecasts (CF) conventions
#   - Example of constructing a mask based on the solar altitude angle.
#   - Changing the mask condition to solar alt <= 0 will mask out the night region.
#   - Changing the mask condition to solar alt > 0 will mask the day region.
#
# Background: The solar altitude angle is the angle of the sun relative to the Earth's horizon,
# and is measured in degrees. The altitude is zero at sunrise and sunset, and can reach a
# maximum of 90 degrees (directly overhead) at noon at latitudes near the equator.
# [Source: https://sciencing.com/solar-altitude-23364.html]

##############################################################################
# Scientific Objective
# --------------------
#
# Creating masking region files to be used by other MET tools.
# This use case applies a solar altitude mask (solar altitude restriction) to the
# input grid, creating a separate masked output file for each time level of the input file.

##############################################################################
# Version Added
# -------------
#
# METplus version 3.1

##############################################################################
# Datasets
# --------
#
# **Forecast:**  NOAA Space Weather Prediction Center (SWPC) 
# GloTEC Total Electron Content (TEC) model run without assimilation of any COSMIC-1 RO data
#
# **Observation:** None
#
# **Climatology:**  None
#
# **Location:** All of the input data required for this use case can be 
# found in a sample data tarball. Each use case category will have 
# one or more sample data tarballs. It is only necessary to download 
# the tarball with the use case’s dataset and not the entire collection 
# of sample data. Click here to access the METplus releases page and download sample data 
# for the appropriate release: https://github.com/dtcenter/METplus/releases
# This tarball should be unpacked into the directory that you will 
# set the value of INPUT_BASE. See :ref:`running-metplus` section for more information.

##############################################################################
# METplus Use Case Contact
# ------------------------
#
# | **Author:** Jonathan L. Vigh (National Center for Atmospheric Research / Research Applications Laboratory / Joint Numerical Testbed)
# | **Last modified:** 26 May 2020

##############################################################################
# METplus Components
# ------------------
#
# This use case utilizes the METplus GenVxMask wrapper to generate a command to run the MET tool GenVxMask if all required files are found.

##############################################################################
# METplus Workflow
# ----------------
#
# **Beginning time (VALID_BEG):** 201503170005
#
# **End time (VALID_END):** 201503170015
#
# **Increment between beginning and end times (VALID_INCREMENT):** 600
#
# **Sequence of forecast leads to process (LEAD_SEQ):** 0
#
# GenVxMask is the only tool called in this example. It processes the following
# run time:
#
# | **Init:** 2015-03-17 0005Z
# | **Forecast lead:** 0
#
# | **Init:** 2015-03-17 0015Z
# | **Forecast lead:** 0
#
# The input file is read to define the output grid. Then the solar altitude angle specified with the -thresh argument is applied to the input file, creating the output file.

##############################################################################
# METplus Configuration
# ---------------------
#
# METplus first loads all of the configuration files found in parm/metplus_config,
# then it loads any configuration files passed to METplus via the command line,
# i.e. parm/use_cases/model_applications/space_weather/GenVxMask_fcstGloTEC_FcstOnly_solar_altitude.conf
#
# .. highlight:: bash
# .. literalinclude:: ../../../../parm/use_cases/model_applications/space_weather/GenVxMask_fcstGloTEC_FcstOnly_solar_altitude.conf

##############################################################################
# MET Configuration
# -----------------
#
# None. GenVxMask does not use configuration files.

##############################################################################
# Python Embedding
# ----------------
#
# This use case does not use Python embedding.

##############################################################################
# User Scripting
# --------------
#
# User Scripting is not used in this use case.

##############################################################################
# Running METplus
# ---------------
#
# Pass the use case configuration file to the run_metplus.py script along 
# with any user-specific system configuration files if desired::
#
#   run_metplus.py /path/to/METplus/parm/use_cases/model_applications/space_weather/GenVxMask_fcstGloTEC_FcstOnly_solar_altitude.conf /path/to/user_system.conf
#
# See :ref:`running-metplus` for more information.

##############################################################################
# Expected Output
# ---------------
#
# A successful run will output the following both to the screen and to the logfile::
#
#   INFO: METplus has successfully finished running.
#
# Refer to the value set for **OUTPUT_BASE** to find where the output data was generated.
# Output for this use case will be found in model_applications/space_weather/GenVxMask_fcstGloTEC_solar_altitude (relative to **OUTPUT_BASE**)
# and will contain the following files:
#
# * GloTEC_TEC_solar_altitude_le_45_masked_2015_03_17_0005.nc
# * GloTEC_TEC_solar_altitude_le_45_masked_2015_03_17_0015.nc

##############################################################################
# Keywords
# --------
#
# .. note::
#
#   * GenVxMaskToolUseCase
#   * SpaceWeatherAppUseCase
#   * NOAASWPCOrgUseCase
#   * MaskingFeatureUseCase
#
#   Navigate to the :ref:`quick-search` page to discover other similar use cases.
#
#
#

# sphinx_gallery_thumbnail_path = '_static/space_weather-GenVxMask_fcstGloTEC_solar_altitude.png'
