-
Notifications
You must be signed in to change notification settings - Fork 3
/
Z0_calc.h
64 lines (53 loc) · 2.7 KB
/
Z0_calc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*****************************************************************************
* *
* Copyright (C) 2022-2023 Liu An Lin <liuanlin-mx@qq.com> *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
*****************************************************************************/
#ifndef __Z0_CALC_H__
#define __Z0_CALC_H__
#include <cstdint>
#include <memory>
class Z0_calc
{
public:
enum
{
Z0_CALC_ATLC = 0,
Z0_CALC_MMTL,
Z0_CALC_FDM,
};
public:
Z0_calc() {};
virtual ~Z0_calc() {}
public:
virtual void set_tmp_name(const std::string& tmp_name) {}
/* 设置物体最小尺寸 */
virtual void set_precision(float unit = 0.035) {}
virtual void set_box_size(float w, float h) {}
virtual std::uint32_t get_type() = 0;
virtual void clean() = 0;
virtual void clean_all() = 0;
/* 坐标是盒子的中心点 */
virtual void add_ground(float x, float y, float w, float thickness) = 0;
virtual void add_wire(float x, float y, float w, float thickness, float conductivity) = 0;
virtual void add_coupler(float x, float y, float w, float thickness, float conductivity) = 0;
virtual void add_elec(float x, float y, float w, float thickness, float er = 4.6) = 0;
/* 返回true表示返回的结果为上一次计算结果的缓存值 */
virtual bool calc_Z0(float& Zo, float& v, float& c, float& l, float& r, float& g) = 0;
virtual bool calc_coupled_Z0(float& Zodd, float& Zeven, float c_matrix[2][2], float l_matrix[2][2], float r_matrix[2][2], float g_matrix[2][2]) = 0;
public:
static std::shared_ptr<Z0_calc> create(std::uint32_t type);
};
#endif