UNPKG

nglibs-cfd

Version:

NGLibs, The module for CFD field Loading for OpenFOAM.

51 lines (46 loc) 1.68 kB
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; } }