{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://voparis-ns.obspm.fr/maser/expres/v1.1/schema#", "title": "MASER/ExPRES input files schema", "type": "object", "required": [ "NUMBER", "TIME", "FREQUENCY", "OBSERVER", "SPDYN", "MOVIE2D", "MOVIE3D", "BODY", "SOURCE" ], "properties": { "SIMU": { "description": "Simulation run description", "type": "object", "required": [ "NAME", "OUT" ], "properties": { "NAME": { "description": "Name of the simulation", "type": "string" }, "OUT": { "description": "Output file location (full path)", "type": "string" } } }, "NUMBER": { "description": "Simulation run source setup", "type": "object", "required": [ "BODY", "DENSITY", "SOURCE" ], "properties": { "BODY": { "description": "Number of natural bodies in the simulation", "type": "integer" }, "DENSITY": { "description": "Number of density models in the simulation", "type": "integer" }, "SOURCE": { "description": "Number of radio sources in the simulation", "type": "integer" } } }, "TIME": { "description": "Simulation run time axis setup", "type": "object", "required": [ "MIN", "MAX", "NBR" ], "properties": { "MIN": { "description": "Start time index of the simulation (in minutes)", "type": "integer" }, "MAX": { "description": "End time index of the simulation (in minutes)", "type": "integer" }, "NBR": { "description": "Number of time steps of the simulation", "type": "integer" } } }, "FREQUENCY": { "description": "Simulation run spectral axis setup", "type": "object", "required": [ "TYPE", "MIN", "MAX", "NBR", "SC" ], "properties": { "TYPE": { "description": "Type of spectral axis (linear or logarithmic scale)", "type": "string", "enum": [ "Pre-Defined", "Linear", "Log" ] }, "MIN": { "description": "Lower bound of the spectral axis (MHz)", "type": "number" }, "MAX": { "description": "Upper bound of the spectral axis (MHz)", "type": "number" }, "NBR": { "description": "Number of steps of the spectral axis", "type": "integer" }, "SC": { "description": "Spacecraft name (use only when spectral type is 'Pre-defined') [not yet implemented]", "type": "string" } } }, "OBSERVER": { "description": "Simulation run observer setup", "type": "object", "required": [ "TYPE", "EPHEM", "FIXE_DIST", "FIXE_SUBL", "FIXE_DECL", "PARENT", "SC", "SCTIME", "SEMI_MAJ", "SEMI_MIN", "SUBL", "DECL", "PHASE", "INCL" ], "properties": { "TYPE": { "description": "Type of observer (Pre-Defined, Orbiter or Fixed)", "type": "string", "enum": [ "Pre-Defined", "Orbiter", "Fixed" ] }, "EPHEM": { "description": "File name containing user defined ephemeris of observer.", "type": "string" }, "FIXE_DIST": { "description": "Observer's distance to parent (if TYPE=Fixed), set to 'auto' is other cases.", "anyOf": [ { "type": "string", "enum": ["auto"] }, {"type": "number"} ] }, "FIXE_SUBL": { "description": "Observer's longitude to parent (if TYPE=Fixed), set to 'auto' is other cases.", "anyOf": [ { "type": "string", "enum": ["auto"] }, {"type": "number"} ] }, "FIXE_DECL": { "description": "Observer's latitude to parent (if TYPE=Fixed), set to 'auto' is other cases.", "anyOf": [ { "type": "string", "enum": ["auto"] }, {"type": "number"} ] }, "PARENT": { "description": "Simulation reference frame centre (must be the same as the source parent, and the first element of the list of bodies)", "type": "string", "enum": [ "Jupiter", "Saturn", "Earth", "Mercury", "Uranus", "Neptune" ] }, "SC": { "description": "Observer's name (can't be empty)", "type": "string", "enum": [ "Juno", "Earth", "Galileo", "JUICE", "Cassini", "Voyager1", "Voyager2" ] }, "SCTIME": { "description": "Start time of the simulation run in SCET (YYYYMMDDHHMM format)", "anyOf": [ { "type": "string", "pattern": "^[0-9]{12}$" }, { "type": "string", "enum": [""] } ] }, "SEMI_MAJ": { "description": "Semi major axis (in case of 'Orbiter' type)", "type": "number" }, "SEMI_MIN": { "description": "Semi minor axis (in case of 'Orbiter' type)", "type": "number" }, "SUBL": { "description": "Sublongitude of apoapsis (in case of 'Orbiter' type)", "type": "number" }, "DECL": { "description": "Declination of apoapsis (in case of 'Orbiter' type)", "type": "number" }, "PHASE": { "description": "Phase (East-Longitude shift) of observer from apoapsis (in case of 'Orbiter' type)", "type": "number" }, "INCL": { "description": "Inclination of orbit plane (in case of 'Orbiter' type)", "type": "number" } }, "allOf": [ { "if": { "properties": { "TYPE": {"const": "Pre-Defined"} } }, "then": { "properties": { "FIXE_DIST": {"const": "auto"}, "FIXE_SUBL": {"const": "auto"}, "FIXE_DECL": {"const": "auto"} } } }, { "if": { "properties": { "TYPE": {"const": "Orbiter"} } }, "then": { "properties": { "FIXE_DIST": {"const": "auto"}, "FIXE_SUBL": {"const": "auto"}, "FIXE_DECL": {"const": "auto"} } } } ], "SPDYN": { "description": "Dynamic Spectra ouput setup", "type": "object", "required": [ "INTENSITY", "POLAR", "FREQ", "LONG", "LAT", "DRANGE", "LGRANGE", "LARANGE", "LTRANGE", "KHZ", "LOG", "PDF", "CDF", "INFOS" ], "properties": { "INTENSITY": { "description": "Flag to ouput 'Intensity' plots", "type": "boolean" }, "POLAR": { "description": "Flag to ouput 'Polar' plots", "type": "boolean" }, "FREQ": { "description": "Flags to setup output plot spectral axes", "type": "array", "items": {"type": "boolean"}, "minItems": 5, "maxItems": 5 }, "LONG": { "description": "Flags to setup output plot longitude axes", "type": "array", "items": {"type": "boolean"}, "minItems": 5, "maxItems": 5 }, "LAT": { "description": "Flags to setup output plot latitude axes", "type": "array", "items": {"type": "boolean"}, "minItems": 5, "maxItems": 5 }, "DRANGE": { "description": "Distance range for plot setup", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "LGRANGE": { "description": "Longitude range for plot setup", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "LARANGE": { "description": "Latitude range for plot setup", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "LTRANGE": { "description": "Local-Time range for plot setup", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "KHZ": { "description": "Flag for spectral axis output in kHz (default is MHz)", "type": "boolean" }, "LOG": { "description": "Flag for spectral axis output in log scale", "type": "boolean" }, "PDF": { "description": "Flag for PDF file output", "type": "boolean" }, "CDF": { "description": "Configuration of CDF file output", "type": "object", "required": [ "THETA", "FP", "FC", "AZIMUTH", "OBSLATITUDE", "SRCLONGITUDE", "SRCFREQMAX", "OBSDISTANCE", "OBSLOCALTIME", "CML", "SRCPOS" ], "properties": { "THETA": { "description": "Flag for THETA parameter output in the CDF file.", "type": "boolean" }, "FP": { "description": "Flag for FP parameter output in the CDF file.", "type": "boolean" }, "FC": { "description": "Flag for FC parameter output in the CDF file.", "type": "boolean" }, "AZIMUTH": { "description": "Flag for AZIMUTH parameter output in the CDF file.", "type": "boolean" }, "OBSLATITUDE": { "description": "Flag for OBSLATITUDE parameter output in the CDF file.", "type": "boolean" }, "SRCLONGITUDE": { "description": "Flag for SRCLONGITUDE parameter output in the CDF file.", "type": "boolean" }, "SRCFREQMAX": { "description": "Flag for SRCFREQMAX parameter output in the CDF file.", "type": "boolean" }, "OBSDISTANCE": { "description": "Flag for OBSDISTANCE parameter output in the CDF file.", "type": "boolean" }, "OBSLOCALTIME": { "description": "Flag for OBSLOCALTIME parameter output in the CDF file.", "type": "boolean" }, "CML": { "description": "Flag for CML parameter output in the CDF file.", "type": "boolean" }, "SRCPOS": { "description": "Flag for SRCPOS parameter output in the CDF file.", "type": "boolean" }, "SRCVIS": { "description": "Flag for SRCVIS parameter output in the CDF file.", "type": "boolean" } } }, "INFOS": { "description": "IDL Saveset output (for debugging).", "type": "boolean" } } }, "MOVIE2D": { "description": "2D Movie output setup", "type": "object", "required": [ "ON", "SUBCYCLE", "RANGE" ], "properties": { "ON": { "description": "Flag to activate Movie2D generation", "type": "boolean" }, "SUBCYCLE": { "description": "Subsampling rate of movie images (1=all temporal steps)", "type": "integer" }, "RANGE": { "description": "Size of Field of view (in central body planetary radii)", "type": "integer" } } }, "MOVIE3D": { "description": "3D Movie output setup", "type": "object", "required": [ "ON", "SUBCYCLE", "XRANGE", "YRANGE", "ZRANGE", "OBS", "TRAJ" ], "properties": { "ON": { "description": "Flag to activate Movie3D generation", "type": "boolean" }, "SUBCYCLE": { "description": "Subsampling rate of movie images (1=all temporal steps)", "type": "integer" }, "XRANGE": { "description": "Plotting Range in X axis (in central planet radius units).", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "YRANGE": { "description": "Plotting Range in Y axis (in central planet radius units).", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "ZRANGE": { "description": "Plotting Range in Z axis (in central planet radius units).", "type": "array", "items": {"type": "number"}, "minItems": 2, "maxItems": 2 }, "OBS": { "description": "Flag to activate plotting the location of the observer", "type": "boolean" }, "TRAJ": { "description": "Flag to activate plotting the trajectories of the objects", "type": "boolean" } } }, "BODY": { "description": "Configuration of the Natural Bodies of the Simulation Run", "type": "array", "items": { "type": "object", "required": [ "ON", "NAME", "RADIUS", "PERIOD", "FLAT", "ORB_PER", "INIT_AX", "MAG", "MOTION", "PARENT", "SEMI_MAJ", "SEMI_MIN", "DECLINATION", "APO_LONG", "INCLINATION", "PHASE", "DENS" ], "properties": { "ON": { "description": "Flag to activate the current natural body", "type": "boolean" }, "NAME": { "description": "Name of the current natural body", "type": "string" }, "RADIUS": { "description": "Radius of the current natural body (in central planetary body radius)", "type": "number" }, "PERIOD": { "description": "Sidereal rotation period of the current natural body (in minutes)", "type": "number" }, "FLAT": { "description": "Flatening ratio of the current natural body", "type": "number" }, "ORB_PER": { "description": "Orbital Period accroding to 3rd Kepler's law (in minutes)", "type": "number" }, "INIT_AX": { "description": "Reference longitude (in degrees)", "type": "number" }, "MAG": { "description": "Internal body magnetic field model", "type": "string", "enum": [ "JRM09+Connerney CS", "ISaAC+Connerney CS", "VIPAL+Connerney CS", "VIT4+Connerney CS", "VIP4+Connerney CS", "O6+Connerney CS", "SPV", "Z3", "Q3", "AH5", "A12" ] }, "MOTION": { "description": "Flag to indicate if the natural body is moving in the simulation frame (must be false for frame central body)", "type": "boolean" }, "PARENT": { "description": "Named natural body around which the current body is orbiting (must be one of the defined bodies, and must be empty for the frame central body)", "type": "string" }, "SEMI_MAJ": { "description": "Semi major axis orbital parameter of the current body (must be 0 for frame central body)", "type": "number" }, "SEMI_MIN": { "description": "Semi minor axis orbital parameter of the current body (must be 0 for frame central body)", "type": "number" }, "DECLINATION": { "description": "Declination orbital parameter of the current body (must be 0 for frame central body)", "type": "number" }, "APO_LONG": { "description": "Apoapsis Longitude parameter of the current body (must be 0 for frame central body)", "type": "number" }, "INCLINATION": { "description": "Inclination orbital parameter of the current body (must be 0 for frame central body)", "type": "number" }, "PHASE": { "description": "Initial orbital phase (at simulation start time) of the current body (must be 0 for frame central body)", "anyOf": [ { "type": "string", "enum": ["auto"] }, {"type": "number"} ] }, "DENS": { "description": "Configuration of the plasma density model aroud the current body (see documentation for details)", "type": "array", "items": { "type": "object", "required": [ "ON", "NAME", "TYPE", "RHO0", "SCALE", "PERP" ], "properties": { "ON": { "description": "Flag to activate the plasma density model", "type": "boolean" }, "NAME": { "description": "Name of the current plasma density model", "type": "string" }, "TYPE": { "description": "Type of density model", "type": "string", "enum": [ "Ionospheric", "Torus" ] }, "RHO0": { "description": "Reference number density (cm^-3) for the current plasma density model", "type": "number" }, "SCALE": { "description": "Reference scale parameter (scale-height or thickness, in planetary radii) for the current plasma density model", "type": "number" }, "PERP": { "description": "Location of the peak density (altitude or distance, in planetary radii) for the current plasma density model", "type": "number" } } } } } } }, "SOURCE": { "description": "Configuration of the Radio Sources of the Simulation Run", "type": "array", "items": { "type": "object", "required": [ "ON", "NAME", "PARENT", "TYPE", "LG_MIN", "LG_MAX", "LG_NBR", "LAT", "SUB", "AURORA_ALT", "SAT", "NORTH", "SOUTH", "WIDTH", "CURRENT", "CONSTANT", "ACCEL", "TEMP", "TEMPH", "REFRACTION" ], "properties": { "ON": { "description": "Flag to activate the current radio source", "type": "boolean" }, "NAME": { "description": "Name of the current radio source", "type": "string" }, "PARENT": { "description": "Name of the parent body for this source (must correspond to a defined BODY name)", "type": "string" }, "TYPE": { "description": "Type of radio source location", "type": "string", "enum": [ "", "fixed in latitude", "attached to a satellite", "L-shell", "M-shell" ] }, "LG_MIN": { "description": "Lower bound value of the source longitude (deg)", "anyOf": [ { "type": "string", "enum": ["auto"] }, {"type": "number"} ] }, "LG_MAX": { "description": "Upper bound value of the source longitude (deg)", "anyOf": [ { "type": "string", "enum": ["auto"] }, {"type": "number"} ] }, "LG_NBR": { "description": "Number of steps for the source longitude (deg)", "type": "integer" }, "LAT": { "description": "if 'Fixed in latitude': Latitude in deg; else: apex distance in planetary radii", "type": "number" }, "SUB": { "description": "subcorotation rate of the source (0 = no corotation)", "type": "number" }, "AURORA_ALT": { "description": "Altitude of the aurora (in planetary radii)", "type": "number" }, "SAT": { "description": "Name of the satellite when 'attached to a satellite' is selected", "type": "string" }, "NORTH": { "description": "Flag to activate the Northern hemisphere source (exclusive with South item)", "type": "boolean" }, "SOUTH": { "description": "Flag to activate the Soutern hemisphere source (exclusive with North item)", "type": "boolean" }, "WIDTH": { "description": "Width of the radio emission sheet (deg)", "type": "number" }, "CURRENT": { "description": "Type of electron distribution in the source (see documentation)", "type": "string", "enum": [ "Transient (Alfvenic)", "Constant", "Steady-State", "Shell" ] }, "CONSTANT": { "description": "Value of beaming pattern half-cone opening angle (if Constant is selected), in degrees", "type": "number" }, "ACCEL": { "description": "Value of resonant electron beam energy in keV (not used if Constant is selected)", "type": "number" }, "TEMP": { "description": "Value of the cold electron distribution temperature (in keV)", "type": "number" }, "TEMPH": { "description": "Value of the halo electron distribution temperature (in keV)", "type": "number" }, "REFRACTION": { "description": "Flag to activate refraction effects (currently not implemented)", "type": "boolean", "enum": [false] } } } } } } }