diff --git a/apps/class-solid/src/components/Experiment.tsx b/apps/class-solid/src/components/Experiment.tsx index f0d87f38..16eef872 100644 --- a/apps/class-solid/src/components/Experiment.tsx +++ b/apps/class-solid/src/components/Experiment.tsx @@ -50,13 +50,11 @@ export function AddExperimentDialog(props: { }) { const defaultPreset = findPresetByName(); const initialExperimentConfig = createMemo(() => { - const config = defaultPreset.parse({}); return { preset: "Default", reference: { - ...config, + ...defaultPreset.config, name: `My experiment ${props.nextIndex}`, - description: "", }, permutations: [], }; diff --git a/apps/class-solid/src/lib/profiles.ts b/apps/class-solid/src/lib/profiles.ts index e1ac188d..77c93194 100644 --- a/apps/class-solid/src/lib/profiles.ts +++ b/apps/class-solid/src/lib/profiles.ts @@ -1,11 +1,11 @@ -import type { PartialConfig } from "@classmodel/class/config_utils"; +import type { Config } from "@classmodel/class/config"; import type { ClassOutput } from "@classmodel/class/runner"; import type { Point } from "~/components/plots/Line"; // Get vertical profiles for a single class run export function getVerticalProfiles( output: ClassOutput | undefined, - config: PartialConfig, + config: Config, variable = "theta", t = -1, ): Point[] { @@ -22,8 +22,7 @@ export function getVerticalProfiles( // Extract potential temperature profile const theta = output.theta.slice(t)[0]; const dtheta = output.dtheta.slice(t)[0]; - // TODO: make sure config contains gammatheta - const gammatheta = config.mixedLayer?.gammatheta ?? 0.006; + const gammatheta = config.mixedLayer.gammatheta; const thetaProfile = [ theta, theta, @@ -36,8 +35,7 @@ export function getVerticalProfiles( // Extract humidity profile const q = output.q.slice(t)[0]; const dq = output.dq.slice(t)[0]; - // TODO: make sure config contains gammaq - const gammaq = config.mixedLayer?.gammaq ?? 0; + const gammaq = config.mixedLayer.gammaq; const qProfile = [q, q, q + dq, q + dq + dh * gammaq]; return hProfile.map((h, i) => ({ x: qProfile[i], y: h })); } @@ -100,7 +98,7 @@ const thickness = (T: number, q: number, p: number, dp: number) => { export function getThermodynamicProfiles( output: ClassOutput | undefined, - config: PartialConfig, + config: Config, t = -1, ) { // Guard against undefined output @@ -113,9 +111,8 @@ export function getThermodynamicProfiles( const dtheta = output.dtheta.slice(t)[0]; const dq = output.dq.slice(t)[0]; const h = output.h.slice(t)[0]; - // TODO: ensure config contains gammatheta and gammaq - const gammaTheta = config.mixedLayer?.gammatheta ?? 0.006; - const gammaq = config.mixedLayer?.gammaq ?? 0; + const gammaTheta = config.mixedLayer.gammatheta; + const gammaq = config.mixedLayer.gammaq; const nz = 25; let dz = h / nz; diff --git a/apps/class-solid/src/lib/runner.ts b/apps/class-solid/src/lib/runner.ts index 5dc233d4..b1a29ed4 100644 --- a/apps/class-solid/src/lib/runner.ts +++ b/apps/class-solid/src/lib/runner.ts @@ -1,6 +1,5 @@ import { BmiClass } from "@classmodel/class/bmi"; import type { Config } from "@classmodel/class/config"; -import type { PartialConfig } from "@classmodel/class/config_utils"; import type { ClassOutput } from "@classmodel/class/runner"; import { parse } from "@classmodel/class/validate"; import { wrap } from "comlink"; @@ -10,7 +9,7 @@ const worker = new Worker(new URL("./worker.ts", import.meta.url), { }); export const AsyncBmiClass = wrap(worker); -export async function runClass(config: PartialConfig): Promise { +export async function runClass(config: Config): Promise { try { const parsedConfig: Config = parse(config); const model = await new AsyncBmiClass();