Opened 15 years ago
Last modified 5 years ago
#40 closed enhancement
Helicity selection rules — at Version 13
Reported by: | ohl | Owned by: | ohl |
---|---|---|---|
Priority: | P3 | Milestone: | v4.0 |
Component: | omega | Version: | 2.0.0alpha |
Severity: | normal | Keywords: | |
Cc: |
Description (last modified by )
Replace the numerical heuristics for helicity selection rules by statically computed ones.
Change History (13)
comment:1 Changed 15 years ago by
Status: | new → assigned |
---|
comment:2 Changed 15 years ago by
Milestone: | v2.0-final → v2.0-beta |
---|
comment:3 Changed 15 years ago by
Milestone: | v2.0-beta → v2.0-final |
---|
comment:4 Changed 15 years ago by
Priority: | P2 → P1 |
---|---|
Severity: | critical → blocker |
comment:5 Changed 15 years ago by
Milestone: | v2.0final → v2.0-rc1 |
---|
comment:6 Changed 15 years ago by
Milestone: | v2.0-rc1 → v2.0-rc2 |
---|---|
Severity: | blocker → critical |
Let's be realistic: TO and WK have to coordinate this. Let's concentrate on getting a tested (but slow) RC1 this weekend and implement helicity selection next week for RC2.
Moving the ticket to v2.0-rc2.
comment:7 Changed 15 years ago by
Milestone: | v2.0-rc2 → v2.0-rc1 |
---|
According to Wolfgang, the W1 method for helicities has to be implemented before release of rc1.
comment:8 Changed 15 years ago by
Re-implemented the old heuristics in r1629. It's not yet validated, but it compiles.
Algorithm (in omegalib):
pure subroutine omega_update_helicity_selection (amp, mask, zeros, threshold, cutoff) complex(kind=default), dimension(:,:,:), intent(in) :: amp logical, dimension(:), intent(inout) :: mask integer, dimension(:), intent(inout) :: zeros real(kind=default), intent(in) :: threshold integer, intent(in) :: cutoff integer :: h real(kind=default) :: avg if (threshold .gt. 0) then avg = sum (abs (amp)) / size (amp) do h = lbound (amp, 2), ubound (amp, 2) if (mask(h)) then if (all (abs (amp(:,h,:)) .lt. threshold * epsilon (avg) * avg )) then zeros(h) = zeros(h) + 1 if (zeros(h) .gt. cutoff) then mask(h) = .false. end if end if end if end do end if end subroutine omega_update_helicity_selection
new interface function
subroutine reset_helicity_selection (threshold, cutoff) real(kind=default), intent(in) :: threshold integer, intent(in) :: cutoff hel_is_allowed = .true. hel_zeros = 0 hel_threshold = threshold hel_cutoff = cutoff end subroutine reset_helicity_selection
where threshold = O(100) and cutoff = O(1000).
Obviously, a negative threshold will disable the helicity selection.
comment:9 Changed 15 years ago by
Priority: | P1 → P2 |
---|---|
Severity: | critical → normal |
Performed some basic tests. Appears to work correctly and to be efficient. Needs tuning of THRESHOLD and CUTOFF. Access from SINDARIN would be nice.
Downgrading the priority and severity.
comment:10 Changed 15 years ago by
The SINDARIN interface is done. There are three variables:
- ?helicity_selection_active (default true) as overall switch
- real helicity_selection_threshold (default 100)
- int helicity_selection_cutoff (default 100)
Please check.
comment:11 Changed 15 years ago by
Description: | modified (diff) |
---|---|
Milestone: | v2.0-rc1 → v2.0final |
Severity: | normal → major |
Passed some more tests. Further tests of the heuristics belong to validation.
Moving this ticket to 2.0final for further optimizations and (maybe later) for an implementation of an analytical approach.
comment:12 Changed 15 years ago by
Milestone: | v2.0final → v2.0-rc1 |
---|---|
Priority: | P2 → P3 |
Severity: | major → normal |
Back to RC1 for an improvement of the logic and a test case. Neither is a big deal and could be moved to RC2.
Highest priority for 2.0_final now!!!