Commit 0a0c349e34e9cb5f4ddc9556af3fb867ac41aff5

Authored by Chris Smartt
1 parent 7deb5e73
Exists in nested_overshields

Add nested overshield checks on MI and MV matrices

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
... ... @@ -6,4 +6,5 @@
6 6 coax_free_space
7 7 0.0 0.0 ! x and y coordinates of the cable centre
8 8 no_ground_plane
  9 +verbose
9 10  
... ...
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)
... ...