mirror of https://github.com/ANL-CEEESA/RELOG.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
4.9 KiB
195 lines
4.9 KiB
const Ajv = require("ajv");
|
|
const ajv = new Ajv();
|
|
|
|
const schema = {
|
|
$schema: "http://json-schema.org/draft-07/schema#",
|
|
$id: "https://anl-ceeesa.github.io/RELOG/input",
|
|
title: "Schema for RELOG Input File",
|
|
definitions: {
|
|
TimeSeries: {
|
|
type: "array",
|
|
items: {
|
|
type: "number",
|
|
},
|
|
},
|
|
Parameters: {
|
|
type: "object",
|
|
properties: {
|
|
"time horizon (years)": {
|
|
type: "number",
|
|
},
|
|
"distance metric": {
|
|
type: "string",
|
|
},
|
|
},
|
|
required: ["time horizon (years)"],
|
|
},
|
|
Plant: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
properties: {
|
|
input: {
|
|
type: "string",
|
|
},
|
|
"outputs (tonne/tonne)": {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "number",
|
|
},
|
|
},
|
|
"energy (GJ/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"emissions (tonne/tonne)": {
|
|
type: "object",
|
|
additionalProperties: {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
},
|
|
locations: {
|
|
$ref: "#/definitions/PlantLocation",
|
|
},
|
|
},
|
|
required: ["input", "locations"],
|
|
},
|
|
},
|
|
PlantLocation: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
properties: {
|
|
location: {
|
|
type: "string",
|
|
},
|
|
"latitude (deg)": {
|
|
type: "number",
|
|
},
|
|
"longitude (deg)": {
|
|
type: "number",
|
|
},
|
|
disposal: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
properties: {
|
|
"cost ($/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"limit (tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
},
|
|
required: ["cost ($/tonne)"],
|
|
},
|
|
},
|
|
storage: {
|
|
type: "object",
|
|
properties: {
|
|
"cost ($/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"limit (tonne)": {
|
|
type: "number",
|
|
},
|
|
},
|
|
required: ["cost ($/tonne)", "limit (tonne)"],
|
|
},
|
|
"capacities (tonne)": {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
properties: {
|
|
"variable operating cost ($/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"fixed operating cost ($)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"opening cost ($)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
},
|
|
required: [
|
|
"variable operating cost ($/tonne)",
|
|
"fixed operating cost ($)",
|
|
"opening cost ($)",
|
|
],
|
|
},
|
|
},
|
|
},
|
|
required: ["capacities (tonne)"],
|
|
},
|
|
},
|
|
InitialAmount: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
properties: {
|
|
location: {
|
|
type: "string",
|
|
},
|
|
"latitude (deg)": {
|
|
type: "number",
|
|
},
|
|
"longitude (deg)": {
|
|
type: "number",
|
|
},
|
|
"amount (tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
},
|
|
required: ["amount (tonne)"],
|
|
},
|
|
},
|
|
Product: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
properties: {
|
|
"transportation cost ($/km/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"transportation energy (J/km/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"transportation emissions (tonne/km/tonne)": {
|
|
type: "object",
|
|
additionalProperties: {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
},
|
|
"initial amounts": {
|
|
$ref: "#/definitions/InitialAmount",
|
|
},
|
|
"disposal limit (tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"disposal cost ($/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
"acquisition cost ($/tonne)": {
|
|
$ref: "#/definitions/TimeSeries",
|
|
},
|
|
},
|
|
required: ["transportation cost ($/km/tonne)"],
|
|
},
|
|
},
|
|
},
|
|
type: "object",
|
|
properties: {
|
|
parameters: {
|
|
$ref: "#/definitions/Parameters",
|
|
},
|
|
plants: {
|
|
$ref: "#/definitions/Plant",
|
|
},
|
|
products: {
|
|
$ref: "#/definitions/Product",
|
|
},
|
|
},
|
|
required: ["parameters", "plants", "products"],
|
|
};
|
|
|
|
export const validate = ajv.compile(schema);
|