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 | ! |