Commit 42627b85e3786e526a4c2c75e81ec4bd80890a42

Authored by daniau
1 parent fdbb9bb0a5

git-svn-id: https://lxsd.femto-st.fr/svn/fvn@48 b657c933-2333-4658-acf2-d3c7c2708721

Showing 1 changed file with 16 additions and 8 deletions Side-by-side Diff

fvn_linear/fvn_linear.f90
... ... @@ -213,29 +213,37 @@
213 213 !
214 214 ! .i.
215 215 !
  216 +! It seems that there's a problem with automatic arrays with gfortran
  217 +! in some circumstances. To allow compilation with gfortran we use here a temporary array
  218 +! for the call. Without that there's a warning at compile time and a segmentation fault
  219 +! during execution. This is odd as we double memory use.
216 220 function fvn_op_s_matinv(a)
217 221 implicit none
218 222 real(4),dimension(:,:),intent(in) :: a
219   - real(4),dimension(size(a,1),size(a,1)) :: fvn_op_s_matinv
220   - call fvn_s_matinv(size(a,1),a,fvn_op_s_matinv,fvn_status)
  223 + real(4),dimension(size(a,1),size(a,1)) :: fvn_op_s_matinv,tmp_array
  224 + call fvn_s_matinv(size(a,1),a,tmp_array,fvn_status)
  225 + fvn_op_s_matinv=tmp_array
221 226 end function
222 227 function fvn_op_d_matinv(a)
223 228 implicit none
224 229 real(8),dimension(:,:),intent(in) :: a
225   - real(8),dimension(size(a,1),size(a,1)) :: fvn_op_d_matinv
226   - call fvn_d_matinv(size(a,1),a,fvn_op_d_matinv,fvn_status)
  230 + real(8),dimension(size(a,1),size(a,1)) :: fvn_op_d_matinv,tmp_array
  231 + call fvn_d_matinv(size(a,1),a,tmp_array,fvn_status)
  232 + fvn_op_d_matinv=tmp_array
227 233 end function
228 234 function fvn_op_c_matinv(a)
229 235 implicit none
230 236 complex(4),dimension(:,:),intent(in) :: a
231   - complex(4),dimension(size(a,1),size(a,1)) :: fvn_op_c_matinv
232   - call fvn_c_matinv(size(a,1),a,fvn_op_c_matinv,fvn_status)
  237 + complex(4),dimension(size(a,1),size(a,1)) :: fvn_op_c_matinv,tmp_array
  238 + call fvn_c_matinv(size(a,1),a,tmp_array,fvn_status)
  239 + fvn_op_c_matinv=tmp_array
233 240 end function
234 241 function fvn_op_z_matinv(a)
235 242 implicit none
236 243 complex(8),dimension(:,:),intent(in) :: a
237   - complex(8),dimension(size(a,1),size(a,1)) :: fvn_op_z_matinv
238   - call fvn_z_matinv(size(a,1),a,fvn_op_z_matinv,fvn_status)
  244 + complex(8),dimension(size(a,1),size(a,1)) :: fvn_op_z_matinv,tmp_array
  245 + call fvn_z_matinv(size(a,1),a,tmp_array,fvn_status)
  246 + fvn_op_z_matinv=tmp_array
239 247 end function
240 248  
241 249 !