Print the r and v constraint defect norms for each segment constraint.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mission_type), | intent(in) | :: | me | |||
| character(len=*), | intent(in) | :: | filename |
csv file to write to |
subroutine print_constraint_defects(me, filename) class(mission_type),intent(in) :: me character(len=*),intent(in) :: filename !! csv file to write to real(wp),dimension(:),allocatable :: f !! constraint violations integer :: irev !! rev number integer :: i, j integer :: m !! number of functions integer :: istat , iunit open(newunit=iunit, file=filename, status='REPLACE', iostat=istat) if (istat/=0) error stop 'error opening '//filename call me%define_problem_size(m=m) allocate(f(m)) call me%get_problem_arrays(f=f) ! f = [xf1-xf2, xf3-xf4, xf5-xf6, xf7-xf8, ... ] in rotating frame i = 0 write(iunit,'(A26,A1,A26)') 'rerr (km)', ',', 'verr (km/s)' do irev = 1, me%n_revs do j = 1, 4 i = i + 1 write(iunit,'(1P,E26.16,A1,E26.16)') norm2(f(i:i+2)), ',', norm2(f(i+2:i+5)) end do end do if (me%constrain_initial_rdot) then ! also the rdot one write(iunit,'(1P,E26.16,A1,E26.16)') f(m), ',', 0.0_wp end if close(iunit, iostat=istat) end subroutine print_constraint_defects