Skip to content
Snippets Groups Projects
gmm-usage.model.ts 3.37 KiB
Newer Older
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
import {Response} from '../../nshmp-ws-utils';
import {
  EnumParameter,
  EnumParameterValues,
} from '../../nshmp-ws-utils/metadata';

/**
 * Marker interface for gmm usage from nshmp-ws.
 */
export type GmmSpectraUsage = Response<string, GmmSpectraUsageResponse>;

/**
 * Marker interface for gmm/distance and gmm/hw-fw usage.
 */
export type GmmDistanceUsage = Response<string, GmmDistanceUsageResponse>;

/**
 * Marker interface for gmm/distance and gmm/hw-fw usage.
 */
export type GmmMagnitudeUsage = Response<string, GmmMagnitudeUsageResponse>;

export enum GmmType {
  ACTIVE_CRUST = 'ACTIVE_CRUST',
  STABLE_CRUST = 'STABLE_CRUST',
  SUBDUCTION_INTERFACE = 'SUBDUCTION_INTERFACE',
  SUBDUCTION_SLAB = 'SUBDUCTION_SLAB',
}

export enum GmmGroupType {
  ALL = 'ALL',
  ACTIVE_CRUST = 'ACTIVE_CRUST',
  STABLE_CRUST = 'STABLE_CRUST',
  SUBDUCTION_INTERFACE = 'SUBDUCTION_INTERFACE',
  SUBDUCTION_SLAB = 'SUBDUCTION_SLAB',
  VOLCANIC = 'VOLCANIC',
  PUERTO_RICO = 'PUERTO_RICO',
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
/**
 * Gmm usage response in Response object.
 */
export interface GmmUsageResponse {
  description: string;
  syntax: string;
  parameters: GmmUsageParameters;
}

/**
 * Gmm vs distance usage response in Response object.
 */
export interface GmmSpectraUsageResponse extends GmmUsageResponse {
  parameters: GmmSpectraUsageParameters;
}

/**
 * Gmm vs distance usage response in Response object.
 */
export interface GmmDistanceUsageResponse extends GmmUsageResponse {
  parameters: GmmDistanceUsageParameters;
}

/**
 * Gmm vs magnitude usage response in Response object.
 */
export interface GmmMagnitudeUsageResponse extends GmmUsageResponse {
  parameters: GmmMagnitudeUsageParameters;
}

/**
 * gmm parameter.
 */
export interface GmmParameter {
  label: string;
  info: string;
  values: GmmValue[];
}

/**
 * gmm value.
 */
export interface GmmValue {
  id: string;
  label: string;
  supportedImts: string[];
  type: GmmType;
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
}

/**
 * gmm group parameters.
 */
export interface GmmGroupParameter {
  label: string;
  info: string;
  values: GmmGroupValue[];
}

/**
 * gmm group values.
 */
export interface GmmGroupValue {
  id: string;
  label: string;
  data: string[];
  type: GmmGroupType;
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
}
Clayton, Brandon Scott's avatar
Clayton, Brandon Scott committed
/**
 * gmm usage parameter.
 */
export interface GmmUsageParameter {
  label: string;
  info: string;
  units?: string;
  min?: number;
  max?: number;
  value: number | boolean;
}

/**
 * gmm usage parameters.
 */
export interface GmmUsageParameters {
  Mw: GmmUsageParameter;
  dip: GmmUsageParameter;
  width: GmmUsageParameter;
  zTor: GmmUsageParameter;
  zHyp: GmmUsageParameter;
  rake: GmmUsageParameter;
  vs30: GmmUsageParameter;
  z1p0: GmmUsageParameter;
  z2p5: GmmUsageParameter;
  zSed: GmmUsageParameter;
  gmm: GmmParameter;
  group: GmmGroupParameter;
}

/**
 * gmm/spectra usage parameters.
 */
export interface GmmSpectraUsageParameters extends GmmUsageParameters {
  rJB: GmmUsageParameter;
  rRup: GmmUsageParameter;
  rX: GmmUsageParameter;
}

/**
 * gmm/distance usage parameters.
 */
export interface GmmDistanceUsageParameters extends GmmUsageParameters {
  imt: EnumParameter<EnumParameterValues>;
  rMin: GmmUsageParameter;
  rMax: GmmUsageParameter;
}

/**
 * gmm/magnitude usage parameters.
 */
export interface GmmMagnitudeUsageParameters extends GmmUsageParameters {
  imt: EnumParameter<EnumParameterValues>;
  mMin: GmmUsageParameter;
  mMax: GmmUsageParameter;
  distance: GmmUsageParameter;
  step: GmmUsageParameter;
}