Spaces:
No application file
No application file
Download frontend/src/store.ts from dimensionalpulsar/adn: direct link, hf CLI and curl.
- Browser
- Download file 2.06 kB
-
https://huggingface.co/spaces/dimensionalpulsar/adn/resolve/main/frontend/src/store.ts
- Command line
-
hf download hf://spaces/dimensionalpulsar/adn/frontend/src/store.ts
-
curl -L -o store.ts https://huggingface.co/spaces/dimensionalpulsar/adn/resolve/main/frontend/src/store.ts
2.06 kB
| import { create } from 'zustand'; | |
| export interface FinDesign { | |
| profile: string; | |
| aspectRatio: number; | |
| sweepAngle: number; | |
| thickness: number; | |
| span: number; | |
| quantity: number; | |
| } | |
| export interface ResistanceData { | |
| waveResistance: number; | |
| viscousResistance: number; | |
| finPenalty: number; | |
| totalResistance: number; | |
| froudeNumber: number; | |
| reynoldsNumber: string; | |
| } | |
| interface SimState { | |
| waveAmplitude: number; // 0 – 8 m | |
| temperature: number; // 0 – 40 °C | |
| waveExpansion: number; // 0.1 – 4.0 (spatial frequency multiplier) | |
| finScale: number; // 0.5 – 2.0 | |
| finDesign: FinDesign | null; | |
| resistance: ResistanceData | null; | |
| designNote: string; | |
| aiSource: 'huggingface' | 'algorithmic' | 'idle'; | |
| isLoadingAI: boolean; | |
| fluidField: number[] | null; | |
| // Setters | |
| setWaveAmplitude: (v: number) => void; | |
| setTemperature: (v: number) => void; | |
| setWaveExpansion: (v: number) => void; | |
| setFinScale: (v: number) => void; | |
| setAIResult: (r: { | |
| suggestedFinScale: number; | |
| finDesign: FinDesign; | |
| resistance: ResistanceData; | |
| designNote: string; | |
| source: string; | |
| }) => void; | |
| setLoadingAI: (v: boolean) => void; | |
| setFluidField: (f: number[]) => void; | |
| } | |
| export const useStore = create<SimState>((set) => ({ | |
| waveAmplitude: 1.5, | |
| temperature: 20, | |
| waveExpansion: 1.0, | |
| finScale: 1.0, | |
| finDesign: null, | |
| resistance: null, | |
| designNote: 'Esperando cálculo IA…', | |
| aiSource: 'idle', | |
| isLoadingAI: false, | |
| fluidField: null, | |
| setWaveAmplitude: (v) => set({ waveAmplitude: v }), | |
| setTemperature: (v) => set({ temperature: v }), | |
| setWaveExpansion: (v) => set({ waveExpansion: v }), | |
| setFinScale: (v) => set({ finScale: v }), | |
| setAIResult: (r) => | |
| set({ | |
| finScale: r.suggestedFinScale, | |
| finDesign: r.finDesign, | |
| resistance: r.resistance, | |
| designNote: r.designNote, | |
| aiSource: r.source === 'huggingface' ? 'huggingface' : 'algorithmic', | |
| }), | |
| setLoadingAI: (v) => set({ isLoadingAI: v }), | |
| setFluidField: (f) => set({ fluidField: f }), | |
| })); | |