E. Parallelized DLD units with through-wafer vias
from mnflow.mfda.cad.dld.theme.block import DLD
dld = DLD(
# core
Np=10,
Nw=15,
gap_w=3.,
pitch_w=7.5,
gap_a=3.0,
pitch_a=15.,
core_shape='beam_c',
beam_thickness=1.2,
num_unit=3,
# filter
opt_filter=True,
filter_preload_spacing=20,
# preload
opt_preload=True,
# collection
opt_collection=True,
opt_collection_with_via=True,
via_dia=100,
# process
opt_mirror=True,
array_counts=[2, 5],
array_spacing=[100, 0],
opt_mirror_before_array=[True, True],
spacing_between_mirrors_before_array=[50, 0],
rotation_angle_deg_before_array=90,
# constraints OFF
turn_off_constraints=True,
# image
opt_save_image=True,
img_dpu=1,
# for compatibility; added in v.0.0.1
opt_acc_balance_pressure=False,
)
----------------------------------------------------------------------
NOTE:
`opt_mirror` is True. The collection design is not comprehensively tested with
this feature yet. Check the design of collection channels and their hydraulic
resistance balance.
In particular, there may be a bump collection channel crossing the mirror axis.
The resistance of this channel is currently considered as that of a pair of
parallel channels with a width equal to half of that of the real central
channel. If the width (compared to height) is sufficiently large, the error
should be negligible.
Otherwise, there can be large errors associated with the hydraulic resistance of
this central channel.
----------------------------------------------------------------------
collection specs
------------------------------------------------------------
concentration enhancement factor: 5.000
------------------------------------------------------------
Note:
A higher level of automation is still lacking. Therefore, read the following
carefully.
Compare important specified parameters (input) related to the geometry of
collection component with those in the produced CAD file to make sure they
match.
Check for the number of zz and bump channels, and their gaps.
In particular, the last zz/bump channel close to the sidewall may be narrower
than the specified value due to lack of space, in which case its hydraulic
resistance may be different from that estimated by using the specified gap.
Note that `zz_bar_offset_w` and `bmp_bar_offset_w` can be used to slide the
bars left or right as needed to mitigate the issue with lack of space.
zz_collection_width: 90.0
bmp_collection_width: 22.5
zz_bar_gap: 5.25
bmp_bar_gap: 6.0
zz_num_ch_side_us: 4.0
bmp_num_ch_central: 2.0
--------------------------------------------------
Important metrics reflecting the correctness of the hydraulic balance.
In particular, `R_zz_over_R_bmp/R_zz_over_R_bmp_target` needs to be close to
1.0. In order to add a slight bias towards bmp collection to prevent large
particles from escaping towards the zz collection at the end of channel, the
value of `R_zz_over_R_bmp/R_zz_over_R_bmp_target` could be configured to be
slightly larger than 1.0. For example, between 1.0 and 1.05.
R_zz/R_bmp: 0.3154558500085163
R_zz/R_bmp target: 0.25
R_zz_over_R_bmp/R_zz_over_R_bmp_target: 1.2618234000340651
--------------------------------------------------
R_bmp: 2361900879919522.0
R_zz: 745075449710875.4
R_zz_ds: 29863257302270.586
R_zz_us: 715212192408604.8
R_zz_ds/R_zz_us: 0.04175440186736853
--------------------------------------------------
Comparing resistances with that of i/o bus to check if the i/o bus has a
negligible resistance.
R_bus/R_zz: 0.026931430011057442
R_bus/R_bmp: 0.008495677146082991
--------------------------------------------------
----------------------------------------
core.DLD___Np:10_Nw:15_gap_w:3.000_pitch_w:7.500_gap_a:3.000_pitch_a:15.000_height:12.000_boundary_treatment:pow_3
block.DLD___num_unit:3_opt_mirror:True_array_counts:[2, 5]_opt_mirror_before_array:[True, True]
----------------------------------------
(Resistance eval.) Warning:
D/W=1.0999999999999999 while the valid range is [0.3, 0.9]
{'Np': 10,
'Nw': 15,
'area': 17867774.759999998,
'bb': [(-997.25, -20.142), (6141.75, 2482.698)],
'count of 1D arrays of core.DLD': 80,
'd_c': 1.9397407445612724,
'lx': 7139.0,
'ly': 2502.8399999999997,
'performance': {'Flow rate @ 1 bar/area (micro-liter/min/mm-sq)': nan,
'die area (mm-sq)': 17.867774759999996,
'gap over crit. dia.': 1.5465984350803206,
'volumetric flow rate at 1 bar (micro-liter/min)': nan},
'resistance (Pa.sec/m^3)': nan,
'volumetric flow rate at 1 bar (m^3/sec)': nan,
'volumetric flow rate at 1 bar (milli-liter/hr)': nan}
/home/docs/checkouts/readthedocs.org/user_builds/mnflow/envs/stable/lib/python3.12/site-packages/mnflow/mfda/cad/utils/common.py:137: RuntimeWarning: invalid value encountered in scalar power
R_nondim = 1.0 + a * (b + np.tan(np.pi / 2.0 * D_over_W)) ** c * T_over_W**d
Output layout:
