Commit 0cd31073b1b4cffa1ad8f53efa4bdcc3741410fe
1 parent
47cbb42e
Exists in
master
and in
2 other branches
Fix numbering error for overshields if overshield is not the last defined cable. Update to V4.1.0
Showing
4 changed files
with
61 additions
and
9 deletions
Show diff stats
SOFTWARE_NOTES/known_problems.txt
SOFTWARE_NOTES/work_log.txt
... | ... | @@ -14,3 +14,7 @@ |
14 | 14 | |
15 | 15 | |
16 | 16 | 13th July CJS fix error in creaating circuit symbols: incident field nodes were missing... |
17 | + | |
18 | +22/10/2019 CJS. Fix numbering error for overshields following a reported error. | |
19 | + Successfully re-run all the automatic test cases and upload the update | |
20 | + to the repository. | ... | ... |
SRC/BUNDLE_DOMAIN_CREATION/create_global_domain_structure.F90
... | ... | @@ -73,7 +73,8 @@ |
73 | 73 | ! so that we can work out the is_shield flag properly in all circumstances. |
74 | 74 | ! 18/10/2017 CJS: include 8b. Copy the cable based conductor labels to the bundle structure |
75 | 75 | ! 16/11/2017 CJS Include network synthesis process to replace s-domain transfer functions |
76 | -! 16/3/2018 CJS add y offset for ML_flex_cable | |
76 | +! 16/3/2018 CJS add y offset for ML_flex_cable | |
77 | +! 22/10/2019 CJS Fix bug with numbering here: overshields were numbered using terminal conductor number not global domain number | |
77 | 78 | ! |
78 | 79 | |
79 | 80 | SUBROUTINE create_global_domain_structure(bundle) |
... | ... | @@ -110,7 +111,7 @@ USE maths |
110 | 111 | integer :: local_cable_conductor,local_domain_conductor |
111 | 112 | integer :: local_n_domains,local_domain |
112 | 113 | integer :: first_external_domain |
113 | - integer :: reference_conductor | |
114 | + integer :: reference_conductor,global_reference_conductor | |
114 | 115 | integer :: first_external_conductor |
115 | 116 | |
116 | 117 | ! variables for looking at overshields and determining which domain cables are in |
... | ... | @@ -354,7 +355,7 @@ USE maths |
354 | 355 | overshield_domain(overshield)=tot_n_domains |
355 | 356 | |
356 | 357 | global_domain_reference_conductor(tot_n_domains)=overshield_reference_terminal_conductor(overshield) |
357 | - | |
358 | + | |
358 | 359 | end if ! this overshield domain is unallocated |
359 | 360 | |
360 | 361 | cable_reference_domain(cable)=overshield_domain(overshield) |
... | ... | @@ -623,10 +624,13 @@ USE maths |
623 | 624 | ! 5c. Set the global_domain_conductor_to_terminal_conductor from terminal_conductor_to_global_domain_conductor |
624 | 625 | |
625 | 626 | if (verbose) then |
627 | + | |
626 | 628 | write(*,*)'conductor,terminal_conductor_to_global_domain_conductor(conductor)' |
629 | + | |
627 | 630 | do conductor=1,tot_n_conductors |
628 | 631 | write(*,*)conductor,terminal_conductor_to_global_domain_conductor(conductor) |
629 | 632 | end do |
633 | + | |
630 | 634 | end if |
631 | 635 | |
632 | 636 | ! loop over terminal conductors |
... | ... | @@ -634,7 +638,33 @@ USE maths |
634 | 638 | global_domain_conductor_to_terminal_conductor(terminal_conductor_to_global_domain_conductor(conductor))=conductor |
635 | 639 | end do |
636 | 640 | |
637 | -! 5d. Set the global_domain_reference_conductor information, also flag all the reference conductors in internal domains | |
641 | + if (verbose) then | |
642 | + | |
643 | + write(*,*)'conductor,global_domain_conductor_to_terminal_conductor(conductor)' | |
644 | + | |
645 | + do conductor=1,tot_n_conductors | |
646 | + write(*,*)conductor,global_domain_conductor_to_terminal_conductor(conductor) | |
647 | + end do | |
648 | + | |
649 | + end if | |
650 | + | |
651 | +! 22/10/2019 CJS Fix bug with numbering here: overshields were numbered using terminal conductor number | |
652 | +! not global domain conductor as it should be at this stage | |
653 | +! 5d. Renumber the reference conductors for overshield domains. At the moment these are terminal conductors | |
654 | +! not global domain conductors | |
655 | + | |
656 | + do overshield=1,tot_n_overshields | |
657 | + | |
658 | + domain=overshield_domain(overshield) | |
659 | + | |
660 | + reference_conductor=global_domain_reference_conductor(domain) | |
661 | + | |
662 | + global_reference_conductor=terminal_conductor_to_global_domain_conductor(reference_conductor) | |
663 | + global_domain_reference_conductor(domain)=global_reference_conductor | |
664 | + | |
665 | + end do ! next overshield | |
666 | + | |
667 | +! 5e. Set the global_domain_reference_conductor information, also flag all the reference conductors in internal domains | |
638 | 668 | |
639 | 669 | conductor=0 ! this is the external conductor number |
640 | 670 | |
... | ... | @@ -669,13 +699,20 @@ USE maths |
669 | 699 | domain=terminal_conductor_to_global_domain(conductor) |
670 | 700 | ! 16/5/2016 this should be the global not the local number... global_domain_reference_conductor(domain)=reference_conductor |
671 | 701 | global_domain_reference_conductor(domain)=bundle%cable(cable)%global_domain_conductor(reference_conductor) |
672 | - | |
702 | + | |
673 | 703 | else |
674 | -! the reference conductor is defined in terms of the reference domain of the cable | |
704 | + | |
705 | +! the reference conductor is defined in terms of the reference domain of the cable | |
706 | + | |
675 | 707 | domain=cable_reference_domain(cable) |
676 | - reference_conductor=global_domain_reference_conductor(domain) | |
708 | + | |
709 | + global_reference_conductor=global_domain_reference_conductor(domain) | |
710 | + | |
711 | + reference_conductor=global_domain_conductor_to_terminal_conductor(global_reference_conductor) | |
712 | + | |
677 | 713 | terminal_conductor_to_reference_global_domain_conductor(conductor)= & |
678 | 714 | terminal_conductor_to_global_domain_conductor(reference_conductor) |
715 | + | |
679 | 716 | reference_conductor=0 |
680 | 717 | |
681 | 718 | end if |
... | ... | @@ -1287,17 +1324,23 @@ USE maths |
1287 | 1324 | ! apart from the shielded twisted pair differential mode exception |
1288 | 1325 | ! so record this hence set out the inner domain number for shields |
1289 | 1326 | |
1327 | +write(*,*)'****************************************************************' | |
1328 | + | |
1290 | 1329 | do domain=1,bundle%tot_n_domains-1 ! note we exclude the exterior domain here |
1291 | 1330 | |
1292 | 1331 | reference_conductor=global_domain_reference_conductor(domain) |
1293 | 1332 | terminal_conductor=global_domain_conductor_to_terminal_conductor(reference_conductor) |
1294 | 1333 | |
1334 | + write(*,*)'domain=',domain,' reference_conductor=',reference_conductor,' terminal_conductor=',terminal_conductor | |
1335 | + | |
1295 | 1336 | if (.NOT.domain_is_TP_differential_mode(domain)) then |
1296 | 1337 | bundle%terminal_conductor_is_shield_flag(terminal_conductor)=.TRUE. |
1297 | 1338 | bundle%terminal_conductor_to_inner_domain(terminal_conductor)=domain |
1298 | 1339 | end if |
1299 | 1340 | |
1300 | 1341 | end do ! next conductor |
1342 | + | |
1343 | +write(*,*)'****************************************************************' | |
1301 | 1344 | |
1302 | 1345 | ! work out the outer domain for each conductor and the associated reference conductor |
1303 | 1346 | do conductor=1,bundle%tot_n_conductors | ... | ... |
version_information.inc