Commit 0a0c349e34e9cb5f4ddc9556af3fb867ac41aff5
1 parent
7deb5e73
Exists in
nested_overshields
Add nested overshield checks on MI and MV matrices
Showing
4 changed files
with
80 additions
and
13 deletions
Show diff stats
SRC/BUNDLE_DOMAIN_CREATION/create_global_domain_structure.F90
... | ... | @@ -168,7 +168,12 @@ USE maths |
168 | 168 | integer :: row_g,col_g,row_g_ref |
169 | 169 | |
170 | 170 | character(LEN=3) :: conductor_string ! used to generate the conductor labels in the bundle |
171 | - | |
171 | + | |
172 | + real(dp),allocatable :: M1(:,:),M1I(:,:),M2(:,:) | |
173 | + integer :: Mdim | |
174 | + integer :: ierr | |
175 | + real(dp) :: Mdiff | |
176 | + | |
172 | 177 | ! START |
173 | 178 | |
174 | 179 | if(verbose) write(*,*)'CALLED: create_global_domain_structure' |
... | ... | @@ -1050,8 +1055,8 @@ USE maths |
1050 | 1055 | ! if (verbose) write(*,*)'Copy MV element',row_g,col_g,bundle%global_MV%mat(row_g,col_g) |
1051 | 1056 | |
1052 | 1057 | if (verbose) then |
1053 | - write(*,*)'Copy MI element',' row_g=',row_g,' col_g=',col_g, & | |
1054 | - ' row_l=',row_l,' col_l=',col_l,bundle%cable(cable)%MI%mat(row_l,col_l) | |
1058 | + write(*,'(A,A,I3,A,I3,A,I3,A,I3,F5.2,F5.2)')'Copy MI element',' row_g=',row_g,' col_g=',col_g, & | |
1059 | + ' row_l=',row_l,' col_l=',col_l,bundle%cable(cable)%MI%mat(row_l,col_l),bundle%cable(cable)%MV%mat(row_l,col_l) | |
1055 | 1060 | end if |
1056 | 1061 | |
1057 | 1062 | end do ! next col |
... | ... | @@ -1180,7 +1185,68 @@ USE maths |
1180 | 1185 | end do ! next local domain |
1181 | 1186 | |
1182 | 1187 | end do ! next cable |
1188 | + | |
1189 | +! if (verbose) then | |
1190 | + | |
1191 | + write(*,*)'' | |
1192 | + write(*,*)'CHECK CONSISTENCY OF MI, MV matrices, (MV)T=(MI^-1)' | |
1193 | + write(*,*)'' | |
1194 | + | |
1195 | + Mdim=bundle%global_MI%dim | |
1183 | 1196 | |
1197 | +! This is the matrix dimensions however if there is no ground plane then the last conductor is | |
1198 | +! the reference and hence the matrix dimension is reduced by one | |
1199 | + | |
1200 | + if (.NOT.bundle%ground_plane_present) then | |
1201 | + Mdim=Mdim-1 | |
1202 | + end if | |
1203 | + | |
1204 | + ALLOCATE( M1(1:Mdim,1:Mdim) ) | |
1205 | + ALLOCATE( M2(1:Mdim,1:Mdim) ) | |
1206 | + ALLOCATE( M1I(1:Mdim,1:Mdim) ) | |
1207 | + | |
1208 | + M1(1:Mdim,1:Mdim)=bundle%global_MI%mat(1:Mdim,1:Mdim) | |
1209 | + | |
1210 | + do row_l=1,Mdim | |
1211 | + do col_l=1,Mdim | |
1212 | + M2(row_l,col_l)=bundle%global_MV%mat(col_l,row_l) | |
1213 | + end do | |
1214 | + end do | |
1215 | + | |
1216 | + CALL dinvert_Gauss_Jordan(M1,Mdim,M1I,Mdim,ierr) | |
1217 | + | |
1218 | + Mdiff=0d0 | |
1219 | + do row_l=1,Mdim | |
1220 | + do col_l=1,Mdim | |
1221 | + Mdiff=Mdiff+abs( M1I(row_l,col_l)-M2(row_l,col_l) ) | |
1222 | + end do | |
1223 | + end do | |
1224 | + | |
1225 | + write(*,*)'MI=' | |
1226 | + CALL dwrite_matrix(M1,Mdim,Mdim,Mdim,0) | |
1227 | + write(*,*)'' | |
1228 | + write(*,*)'(MI)^-1^=' | |
1229 | + CALL dwrite_matrix(M1I,Mdim,Mdim,Mdim,0) | |
1230 | + write(*,*)'' | |
1231 | + write(*,*)'(MV)T=' | |
1232 | + CALL dwrite_matrix(M2,Mdim,Mdim,Mdim,0) | |
1233 | + | |
1234 | + write(*,*)'' | |
1235 | + write(*,*)'Matrix difference=',Mdiff | |
1236 | + write(*,*)'' | |
1237 | + | |
1238 | + DEALLOCATE( M1 ) | |
1239 | + DEALLOCATE( M2 ) | |
1240 | + DEALLOCATE( M1I ) | |
1241 | + | |
1242 | + if (Mdiff.GT.0.001) then | |
1243 | + write(*,*)'ERROR in create_global_domain_structure' | |
1244 | + write(*,*)'(MV)T .NE. (MI)^-1' | |
1245 | + STOP | |
1246 | + end if | |
1247 | + | |
1248 | +! end if | |
1249 | + | |
1184 | 1250 | ! 7. Calculate the inductance and capacitance matrices for the external domains (domains within overshields and the external domain) |
1185 | 1251 | |
1186 | 1252 | if(verbose) write(*,*)'first external domain:',first_external_domain | ... | ... |
TEST_CASES/COAX_FREE_SPACE/coax.bundle_spec
TEST_CASES/COMPLEX_BUNDLE/complex_bundle.bundle_spec
... | ... | @@ -3,8 +3,6 @@ |
3 | 3 | #MOD_bundle_lib_dir |
4 | 4 | ./ |
5 | 5 | 9 # number of cables (including overshields) followed by a list of the cables |
6 | -10mm_radius_overshield | |
7 | -0.0 0.030 0.0 ! x and y coordinates of the overshield centre and rotation angle, theta | |
8 | 6 | 0.1mm_radius_single_wire |
9 | 7 | -0.005 0.030 0.0 ! x and y coordinates of the cable centre and rotation angle, theta |
10 | 8 | rg58 |
... | ... | @@ -21,5 +19,7 @@ shielded_twisted_pair |
21 | 19 | 0.00 0.025 0.0 ! x and y coordinates of the cable centre and rotation angle, theta |
22 | 20 | spacewire |
23 | 21 | 0.02 0.02 0.0 ! x and y coordinates of the cable centre and rotation angle, theta |
22 | +10mm_radius_overshield | |
23 | +0.0 0.030 0.0 ! x and y coordinates of the overshield centre and rotation angle, theta | |
24 | 24 | ground_plane |
25 | 25 | ... | ... |
TEST_CASES/COMPLEX_BUNDLE/complex_bundle.spice_model_spec
... | ... | @@ -16,9 +16,9 @@ complex_bundle |
16 | 16 | -1.0 0.0 Etheta Ephi |
17 | 17 | #Transfer impedance terms |
18 | 18 | 1 # number of transfer impedances to include in the model |
19 | -7 -1 # conductor number and coupling direction for transfer impedance model 1 + is inside to out | |
19 | +6 -1 # conductor number and coupling direction for transfer impedance model 1 + is inside to out | |
20 | 20 | # End 1 termination model |
21 | -1.0 End 1 voltage source list | |
21 | +0.0 End 1 voltage source list | |
22 | 22 | 0.0 |
23 | 23 | 0.0 |
24 | 24 | 0.0 |
... | ... | @@ -46,9 +46,8 @@ complex_bundle |
46 | 46 | 0.0 |
47 | 47 | 0.0 |
48 | 48 | 0.0 |
49 | -0.0 | |
50 | -50.0 End 1 impedance list | |
51 | -25.0 | |
49 | +1.0 | |
50 | +25.0 End 1 impedance list | |
52 | 51 | 0.0 |
53 | 52 | 0.0 |
54 | 53 | 0.0 |
... | ... | @@ -76,6 +75,7 @@ complex_bundle |
76 | 75 | 0.0 |
77 | 76 | 0.0 |
78 | 77 | 0.0 |
78 | +50.0 | |
79 | 79 | # End 2 termination model |
80 | 80 | 0.0 End 2 voltage source list |
81 | 81 | 0.0 |
... | ... | @@ -106,8 +106,7 @@ complex_bundle |
106 | 106 | 0.0 |
107 | 107 | 0.0 |
108 | 108 | 0.0 |
109 | -5.0 End 2 impedance list | |
110 | -1000.0 | |
109 | +1000.0 End 2 impedance list | |
111 | 110 | 0.0 |
112 | 111 | 0.0 |
113 | 112 | 0.0 |
... | ... | @@ -135,12 +134,13 @@ complex_bundle |
135 | 134 | 0.0 |
136 | 135 | 0.0 |
137 | 136 | 0.0 |
137 | +5.0 End 2 impedance list | |
138 | 138 | # Type of analysis |
139 | 139 | AC |
140 | 140 | log # frequency scale (log or lin) |
141 | 141 | 1e5 1e9 1000 # fmin fmax number_of_frequencies |
142 | 142 | # Output conductor number and end number |
143 | -6 2 | |
143 | +5 28 2 | |
144 | 144 | lin # output type (lin or dB) |
145 | 145 | 0 # order for vector fit model |
146 | 146 | log # frequency scale (log or lin) | ... | ... |