Commit 42627b85e3786e526a4c2c75e81ec4bd80890a42
1 parent
fdbb9bb0a5
Exists in
master
and in
3 other branches
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 | ! |