UNPKG

@peterspackman/occjs

Version:

JavaScript/WebAssembly bindings for OCC - a quantum chemistry and crystallography library

150 lines (128 loc) 3.3 kB
/** * TypeScript definitions for DMA (Distributed Multipole Analysis) functionality */ import { Molecule } from './index.d.ts'; // DMA-specific interfaces that should be added to the main module export interface Mult { max_rank: number; q: Vec; // Level 0 (monopole) Q00(): number; charge(): number; // Level 1 (dipole) Q10(): number; Q11c(): number; Q11s(): number; // Level 2 (quadrupole) Q20(): number; Q21c(): number; Q21s(): number; Q22c(): number; Q22s(): number; // Level 3 (octupole) Q30(): number; Q31c(): number; Q31s(): number; Q32c(): number; Q32s(): number; Q33c(): number; Q33s(): number; // Level 4 (hexadecapole) Q40(): number; Q41c(): number; Q41s(): number; Q42c(): number; Q42s(): number; Q43c(): number; Q43s(): number; Q44c(): number; Q44s(): number; num_components(): number; toString(rank: number): string; } export interface DMASettings { max_rank: number; big_exponent: number; include_nuclei: boolean; } export interface DMAResultInterface { max_rank: number; multipoles: Mult[]; } export interface DMASites { size(): number; num_atoms(): number; atoms: unknown[]; name: string[]; positions: Mat3N; atom_indices: IVec; radii: Vec; limits: IVec; } export interface DMACalculator { update_settings(settings: DMASettings): void; settings(): DMASettings; set_radius_for_element(atomic_number: number, radius_angs: number): void; set_limit_for_element(atomic_number: number, limit: number): void; sites(): DMASites; compute_multipoles(): DMAResultInterface; compute_total_multipoles(result: DMAResultInterface): Mult; } // High-level JavaScript API export interface DMAOptions { maxRank?: number; bigExponent?: number; includeNuclei?: boolean; atomRadii?: Record<string, number>; atomLimits?: Record<string, number>; } export interface MultipoleComponents { Q00: number; charge: number; Q10: number; Q11c: number; Q11s: number; Q20: number; Q21c: number; Q21s: number; Q22c: number; Q22s: number; maxRank: number; } export declare class DMAConfig { maxRank: number; bigExponent: number; includeNuclei: boolean; atomRadii: Map<string, number>; atomLimits: Map<string, number>; writePunch: boolean; punchFilename: string; constructor(); setAtomRadius(element: string, radius: number): void; setAtomLimit(element: string, maxRank: number): void; } export declare class DMAResult { result: DMAResultInterface; sites: DMASites; total: Mult; constructor(result: DMAResultInterface, sites: DMASites, total: Mult); getSiteMultipoles(siteIndex: number): Mult; getTotalMultipoles(): Mult; getSites(): DMASites; toPunchFile(): string; getMultipoleComponent(siteIndex: number, component: string): number; getAllComponents(siteIndex: number): MultipoleComponents; } export declare function calculateDMA( molecule: Molecule, basisName: string, options?: DMAOptions ): Promise<DMAResult>; export declare function generatePunchFile(dmaResult: DMAResult): string; declare const DMAModule: { DMAConfig: typeof DMAConfig; DMAResult: typeof DMAResult; calculateDMA: typeof calculateDMA; generatePunchFile: typeof generatePunchFile; }; export default DMAModule;