~reducedmodelling/fluidity/ROM_Non-intrusive-ann

« back to all changes in this revision

Viewing changes to assemble/Saturation_Distribution_Search_HookeJeeves.F90

  • Committer: skramer
  • Date: 2010-11-16 15:37:38 UTC
  • Revision ID: svn-v4:5bf5533e-7014-46e3-b1bb-cce4b9d03719:trunk:2477
Changing the storage of vector_field from vfield%val(dim)%ptr(node) to vfield%val(dim,node).

This was a long desired and discussed change that should improve cache performance and will allow vector fields of more than 3 dimension (internally no vtk support). Just realised it could be done with a few simple seds.

Most important changes need:
- removal of wrap_field() for vector_fields.
- this required some surgery in vtk_write_fields, a horrible piece of code in any case
- traffic and mesh_movement were using wrap_field and now have to do a few more copies.
- halo_update() requires a contiguous buffer in memory, so a copy is now done for halo_update(vfield)
- the wrapped python vector fields available in python_state diagnostics had to be rewired to account for the new storage. This actually simplifies the wrapping a lot.

I realise this is a big commit which might give some trouble when merging in big changes (from for example a branch). The following little script I used might be handy for this. You might only want to apply it to files you have modified. Make sure you back up your entire local checkout before applying any of these:

#/bin/sh
FILES=*/*.F90 */tests/*.F90
# replace any %val(1)%ptr(2) where 2 contains a pair of ()
sed -i 's!%val(\([A-Za-z0-9%_\+\* -]*\))%ptr(\([^)]*([^)]*)[^)]*\))!%val(\1,\2)!g' ${FILES}
# replace any %val(1)%ptr(2) where 2 contains no closing )
sed -i 's!%val(\([A-Za-z0-9%_\+\* -]*\))%ptr(\([^)]*\))!%val(\1,\2)!g' ${FILES}
# replace any %val(1)%ptr not followed by (
sed -i 's!%val(\([A-Za-z0-9%_\+\* -]*\))%ptr!%val(\1,:)!g' ${FILES}
# now svn revert femtools/Sparse_Tools.F90
# as it gives false positives for dcsr_matrices
# luckily it doesn't use vector_fields, so we can just revert


Show diffs side-by-side

added added

removed removed

Lines of Context:
379
379
           if (is_vwell) then
380
380
              call get_option(trim(option_buffer)//'borehole_y',bh_y)
381
381
              do j=1,node_count(coordinates)
382
 
                 if ((abs(coordinates%val(X_)%ptr(j)-bh_x)<err).and.(abs(coordinates%val(Y_)%ptr(j)-bh_y)<err).and.&
383
 
                    (abs(coordinates%val(Z_)%ptr(j)-target_potential(i,1))<err)) then
 
382
                 if ((abs(coordinates%val(X_,j)-bh_x)<err).and.(abs(coordinates%val(Y_,j)-bh_y)<err).and.&
 
383
                    (abs(coordinates%val(Z_,j)-target_potential(i,1))<err)) then
384
384
                    node_list(i)=j
385
385
                 end if
386
386
              end do
388
388
              call get_option(trim(option_buffer)//'borehole_x',bh_x)
389
389
              call get_option(trim(option_buffer)//'borehole_z',bh_z)
390
390
              do j=1,node_count(coordinates)
391
 
                 if ((abs(coordinates%val(X_)%ptr(j)-bh_x)<err).and.(abs(coordinates%val(Z_)%ptr(j)-bh_z)<err).and.&
392
 
                    (abs(coordinates%val(Y_)%ptr(j)-target_potential(i,1))<err)) then
 
391
                 if ((abs(coordinates%val(X_,j)-bh_x)<err).and.(abs(coordinates%val(Z_,j)-bh_z)<err).and.&
 
392
                    (abs(coordinates%val(Y_,j)-target_potential(i,1))<err)) then
393
393
                    node_list(i)=j
394
394
                 endif
395
395
              end do