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
1 | Record of known problems in SACAMOS | 1 | Record of known problems in SACAMOS |
2 | + | ||
3 | +21/10/2019: A problem has been reported when using overshields. If the overshield is | ||
4 | + not the last cable to be defined then the numbering of reference conductors | ||
5 | + (shields) in the bundle can be incorrect. Fixed 22/10/2019 CJS. | ||
6 | + |
SOFTWARE_NOTES/work_log.txt
@@ -14,3 +14,7 @@ | @@ -14,3 +14,7 @@ | ||
14 | 14 | ||
15 | 15 | ||
16 | 13th July CJS fix error in creaating circuit symbols: incident field nodes were missing... | 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,7 +73,8 @@ | ||
73 | ! so that we can work out the is_shield flag properly in all circumstances. | 73 | ! so that we can work out the is_shield flag properly in all circumstances. |
74 | ! 18/10/2017 CJS: include 8b. Copy the cable based conductor labels to the bundle structure | 74 | ! 18/10/2017 CJS: include 8b. Copy the cable based conductor labels to the bundle structure |
75 | ! 16/11/2017 CJS Include network synthesis process to replace s-domain transfer functions | 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 | SUBROUTINE create_global_domain_structure(bundle) | 80 | SUBROUTINE create_global_domain_structure(bundle) |
@@ -110,7 +111,7 @@ USE maths | @@ -110,7 +111,7 @@ USE maths | ||
110 | integer :: local_cable_conductor,local_domain_conductor | 111 | integer :: local_cable_conductor,local_domain_conductor |
111 | integer :: local_n_domains,local_domain | 112 | integer :: local_n_domains,local_domain |
112 | integer :: first_external_domain | 113 | integer :: first_external_domain |
113 | - integer :: reference_conductor | 114 | + integer :: reference_conductor,global_reference_conductor |
114 | integer :: first_external_conductor | 115 | integer :: first_external_conductor |
115 | 116 | ||
116 | ! variables for looking at overshields and determining which domain cables are in | 117 | ! variables for looking at overshields and determining which domain cables are in |
@@ -354,7 +355,7 @@ USE maths | @@ -354,7 +355,7 @@ USE maths | ||
354 | overshield_domain(overshield)=tot_n_domains | 355 | overshield_domain(overshield)=tot_n_domains |
355 | 356 | ||
356 | global_domain_reference_conductor(tot_n_domains)=overshield_reference_terminal_conductor(overshield) | 357 | global_domain_reference_conductor(tot_n_domains)=overshield_reference_terminal_conductor(overshield) |
357 | - | 358 | + |
358 | end if ! this overshield domain is unallocated | 359 | end if ! this overshield domain is unallocated |
359 | 360 | ||
360 | cable_reference_domain(cable)=overshield_domain(overshield) | 361 | cable_reference_domain(cable)=overshield_domain(overshield) |
@@ -623,10 +624,13 @@ USE maths | @@ -623,10 +624,13 @@ USE maths | ||
623 | ! 5c. Set the global_domain_conductor_to_terminal_conductor from terminal_conductor_to_global_domain_conductor | 624 | ! 5c. Set the global_domain_conductor_to_terminal_conductor from terminal_conductor_to_global_domain_conductor |
624 | 625 | ||
625 | if (verbose) then | 626 | if (verbose) then |
627 | + | ||
626 | write(*,*)'conductor,terminal_conductor_to_global_domain_conductor(conductor)' | 628 | write(*,*)'conductor,terminal_conductor_to_global_domain_conductor(conductor)' |
629 | + | ||
627 | do conductor=1,tot_n_conductors | 630 | do conductor=1,tot_n_conductors |
628 | write(*,*)conductor,terminal_conductor_to_global_domain_conductor(conductor) | 631 | write(*,*)conductor,terminal_conductor_to_global_domain_conductor(conductor) |
629 | end do | 632 | end do |
633 | + | ||
630 | end if | 634 | end if |
631 | 635 | ||
632 | ! loop over terminal conductors | 636 | ! loop over terminal conductors |
@@ -634,7 +638,33 @@ USE maths | @@ -634,7 +638,33 @@ USE maths | ||
634 | global_domain_conductor_to_terminal_conductor(terminal_conductor_to_global_domain_conductor(conductor))=conductor | 638 | global_domain_conductor_to_terminal_conductor(terminal_conductor_to_global_domain_conductor(conductor))=conductor |
635 | end do | 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 | conductor=0 ! this is the external conductor number | 669 | conductor=0 ! this is the external conductor number |
640 | 670 | ||
@@ -669,13 +699,20 @@ USE maths | @@ -669,13 +699,20 @@ USE maths | ||
669 | domain=terminal_conductor_to_global_domain(conductor) | 699 | domain=terminal_conductor_to_global_domain(conductor) |
670 | ! 16/5/2016 this should be the global not the local number... global_domain_reference_conductor(domain)=reference_conductor | 700 | ! 16/5/2016 this should be the global not the local number... global_domain_reference_conductor(domain)=reference_conductor |
671 | global_domain_reference_conductor(domain)=bundle%cable(cable)%global_domain_conductor(reference_conductor) | 701 | global_domain_reference_conductor(domain)=bundle%cable(cable)%global_domain_conductor(reference_conductor) |
672 | - | 702 | + |
673 | else | 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 | domain=cable_reference_domain(cable) | 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 | terminal_conductor_to_reference_global_domain_conductor(conductor)= & | 713 | terminal_conductor_to_reference_global_domain_conductor(conductor)= & |
678 | terminal_conductor_to_global_domain_conductor(reference_conductor) | 714 | terminal_conductor_to_global_domain_conductor(reference_conductor) |
715 | + | ||
679 | reference_conductor=0 | 716 | reference_conductor=0 |
680 | 717 | ||
681 | end if | 718 | end if |
@@ -1287,17 +1324,23 @@ USE maths | @@ -1287,17 +1324,23 @@ USE maths | ||
1287 | ! apart from the shielded twisted pair differential mode exception | 1324 | ! apart from the shielded twisted pair differential mode exception |
1288 | ! so record this hence set out the inner domain number for shields | 1325 | ! so record this hence set out the inner domain number for shields |
1289 | 1326 | ||
1327 | +write(*,*)'****************************************************************' | ||
1328 | + | ||
1290 | do domain=1,bundle%tot_n_domains-1 ! note we exclude the exterior domain here | 1329 | do domain=1,bundle%tot_n_domains-1 ! note we exclude the exterior domain here |
1291 | 1330 | ||
1292 | reference_conductor=global_domain_reference_conductor(domain) | 1331 | reference_conductor=global_domain_reference_conductor(domain) |
1293 | terminal_conductor=global_domain_conductor_to_terminal_conductor(reference_conductor) | 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 | if (.NOT.domain_is_TP_differential_mode(domain)) then | 1336 | if (.NOT.domain_is_TP_differential_mode(domain)) then |
1296 | bundle%terminal_conductor_is_shield_flag(terminal_conductor)=.TRUE. | 1337 | bundle%terminal_conductor_is_shield_flag(terminal_conductor)=.TRUE. |
1297 | bundle%terminal_conductor_to_inner_domain(terminal_conductor)=domain | 1338 | bundle%terminal_conductor_to_inner_domain(terminal_conductor)=domain |
1298 | end if | 1339 | end if |
1299 | 1340 | ||
1300 | end do ! next conductor | 1341 | end do ! next conductor |
1342 | + | ||
1343 | +write(*,*)'****************************************************************' | ||
1301 | 1344 | ||
1302 | ! work out the outer domain for each conductor and the associated reference conductor | 1345 | ! work out the outer domain for each conductor and the associated reference conductor |
1303 | do conductor=1,bundle%tot_n_conductors | 1346 | do conductor=1,bundle%tot_n_conductors |
version_information.inc