nglibs-cfd
Version:
NGLibs, The module for CFD field Loading for OpenFOAM.
51 lines (46 loc) • 1.68 kB
text/typescript
import { Vector3,Color } from "nglibs-math";
export const _fiedxUpdateTime: number = 30;
export enum CFDParaOption{
normal,
simple
}
export interface CFDFieldEmulator {
Emulate(posIn: Vector3, velout: CFDCellParmaters, option:CFDParaOption,sampleRange:number): boolean;
ColorPresnt?(property:string,value:number,colorOut?:Color):Color;
PickParameter?(cellindex: number, velout: CFDCellParmaters): boolean;
//colorTables?:{[key:string]:ColorTable},
//colorTable?:ColorTable,
cells?:CFDCellProps[],
cellsPropRange?:{[key:string]:{max:number,min:number}}
}
export interface CFDCellParmaters {
speed: Vector3;
}
export interface CFDCellProps {
pos: Vector3,
vol?: number,
}
export class CFDFieldDummy implements CFDFieldEmulator {
Emulate(pos: Vector3, out: CFDCellParmaters): boolean {
let ang = Math.PI / 2;
if (pos.x > 0.001) {
ang = Math.atan(pos.y / pos.x);
} else {
if (pos.x < -0.001) {
ang = Math.atan(pos.y / pos.x) + Math.PI;
}
}
let len = Math.sqrt(pos.y * pos.y + pos.x * pos.x);
let zVfactor = Math.min(100, len);
zVfactor = (10000 - zVfactor * zVfactor) / 10000;
let velout = out["speed"];
velout.x = len * zVfactor * Math.cos(ang - Math.PI / 2) + 1;
velout.y = len * zVfactor * Math.sin(ang - Math.PI / 2) + 1;
velout.z = (pos.z / 3) * zVfactor + 10;
if (out["T"] != null) {
out["T"] = pos.z / 3;
out["T"] += (pos.x * pos.x + pos.y * pos.y) / 100;
}
return true;
}
}