@@ -235,7 +235,7 @@ subroutine tao_change_ele (ele_name, attrib_name, num_str, update, err_flag)
235235type (ele_pointer_struct), allocatable :: eles(:)
236236
237237real (rp), allocatable :: change_number(:), old_value(:)
238- real (rp) new_merit, old_merit, new_value, delta, max_val
238+ real (rp) new_merit, old_merit, delta, max_val, new_value, design_value
239239
240240integer i, ix, iu, nl, len_name, nd
241241integer , parameter :: len_lines = 200
@@ -331,23 +331,24 @@ subroutine tao_change_ele (ele_name, attrib_name, num_str, update, err_flag)
331331 do i = 1 , nd
332332 if (.not. free(i)) cycle
333333
334- old_value(i) = m_ptr(i)% r
334+ old_value(i) = value_of_all_ptr(m_ptr(i))
335+ design_value = value_of_all_ptr(d_ptr(i))
335336
336337 if (abs_or_rel == ' @' ) then
337- m_ptr(i)% r = change_number(i)
338+ call set_all_ptr( m_ptr(i), change_number(i), value_set = new_value )
338339 elseif (abs_or_rel == ' d' ) then
339- m_ptr(i)% r = d_ptr(i) % r + change_number(i)
340+ call set_all_ptr( m_ptr(i), design_value + change_number(i), value_set = new_value )
340341 elseif (abs_or_rel == ' %' ) then
341- m_ptr(i)% r = m_ptr (i)% r * (1 + 0.01 * change_number(i))
342+ call set_all_ptr( m_ptr(i), old_value (i) * (1 + 0.01 * change_number(i)), value_set = new_value )
342343 else
343- m_ptr(i)% r = m_ptr (i)% r + change_number(i )
344+ call set_all_ptr( m_ptr(i), change_number (i), delta = .true. , value_set = new_value )
344345 endif
345346
346- delta = m_ptr(i) % r - old_value(i)
347+ delta = new_value - old_value(i)
347348
348349 call tao_set_flags_for_changed_attribute(u, e_name, eles(i)% ele, m_ptr(i), who = a_name)
349350
350- max_val = max (abs (old_value(i)), abs (m_ptr(i) % r) , abs (d_ptr( 1 ) % r ))
351+ max_val = max (abs (old_value(i)), abs (new_value) , abs (design_value ))
351352 str = real_num_fortran_format(max_val, 14 , 2 )
352353 fmt = ' (5' // trim (str) // ' , 4x, a)'
353354
@@ -356,9 +357,8 @@ subroutine tao_change_ele (ele_name, attrib_name, num_str, update, err_flag)
356357 if (nl < 11 ) then
357358 name = ' PARTICLE_START'
358359 if (associated (eles(i)% ele)) name = eles(i)% ele% name
359- nl= nl+1 ; write (lines(nl), fmt) old_value(i), m_ptr(i)% r, &
360- old_value(i)- d_ptr(i)% r, m_ptr(i)% r- d_ptr(i)% r, &
361- m_ptr(i)% r- old_value(i), trim (name)
360+ nl= nl+1 ; write (lines(nl), fmt) old_value(i), new_value, old_value(i)- design_value, &
361+ new_value- design_value, delta, trim (name)
362362 else
363363 if (.not. etc_added) then
364364 nl= nl+1 ; lines(nl) = ' ... etc ...'
0 commit comments