"""
:file: c_structures.py
:author: Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
:date: 2024-07-24
该文件包括
1、模型结构体的C接口 c_PyModel1D
2、格林函数结构体的C接口 c_GRN
"""
from ctypes import *
__all__ = [
"CHANNEL_NUM",
"QWV_NUM",
"INTEG_NUM",
"SRC_M_NUM",
"SRC_M_ORDERS",
"SRC_M_NAME_ABBR",
"ZRTchs",
"ZNEchs",
"qwvchs",
"NPCT_REAL_TYPE",
"NPCT_CMPLX_TYPE",
"REAL",
"PREAL",
"PCPLX",
"c_GRT_MODEL1D",
]
CHANNEL_NUM = 3
QWV_NUM = 3
INTEG_NUM = 4
SRC_M_NUM = 6
SRC_M_ORDERS = [0, 0, 1, 0, 1, 2]
SRC_M_NAME_ABBR = ["EX", "VF", "HF", "DD", "DS", "SS"]
ZRTchs = ['Z', 'R', 'T']
ZNEchs = ['Z', 'N', 'E']
qwvchs = ['q', 'w', 'v']
NPCT_REAL_TYPE = 'f8'
NPCT_CMPLX_TYPE = 'c16'
REAL = c_double
CPLX = REAL*2
PREAL = POINTER(REAL)
PCPLX = POINTER(CPLX)
class c_RT_MATRIX(Structure):
"""
和C结构体 RT_MATRIX 匹配
"""
_fields_ = [
('RD', CPLX * 4),
('RU', CPLX * 4),
('TD', CPLX * 4),
('TU', CPLX * 4),
('RDL', CPLX),
('RUL', CPLX),
('TDL', CPLX),
('TUL', CPLX),
('invT', CPLX * 4),
('invTL', CPLX),
('stats', c_int)
]
[文档]
class c_GRT_MODEL1D(Structure):
"""
和C结构体 GRT_MODEL1D 作匹配
"""
_fields_ = [
('n', c_size_t),
("depsrc", REAL),
("deprcv", REAL),
('isrc', c_size_t),
('ircv', c_size_t),
('ircvup', c_bool),
('io_depth', c_bool),
('omega', CPLX),
('k', REAL),
('c_phase', CPLX),
('Thk', PREAL),
('Dep', PREAL),
('Va', PREAL),
('Vb', PREAL),
('Rho', PREAL),
('Qa', PREAL),
('Qb', PREAL),
('Qainv', PREAL),
('Qbinv', PREAL),
('mu', PCPLX),
('lambda', PCPLX),
('delta', PCPLX),
('atna', PCPLX),
('atnb', PCPLX),
('xa', PCPLX),
('xb', PCPLX),
('caca', PCPLX),
('cbcb', PCPLX),
('stats', c_int),
('M_AL', c_RT_MATRIX),
('M_BL', c_RT_MATRIX),
('M_RS', c_RT_MATRIX),
('M_FA', c_RT_MATRIX),
('M_FB', c_RT_MATRIX),
('M_top', c_RT_MATRIX),
('R_EV', CPLX * 4),
('R_EVL', CPLX),
('uiz_R_EV', CPLX * 4),
('uiz_R_EVL', CPLX),
('src_coef', CPLX * SRC_M_NUM * QWV_NUM * 2)
]