From: Bill P. <pa...@ki...> - 2010-06-25 21:01:32
|
On Jun 25, 2010, at 1:46 PM, Eric Blais wrote: > I'm using ifort. Version 11.1.038. well this is looking like a compiler problem, so I'll ask you to update to the most recent ifort 11.1 which I believe is 088. the output that makes me think this is the compiler comes from these lines in load_co_kap allocate(co_tables(num_tables), STAT=status) if (status .ne. 0) then ierr = -1 call alert(ierr, 'InsufficientMemory for Prepare_Kap_CO_X_Table') if (CO_dbg) write(*,*) 'InsufficientMemory for Prepare_Kap_CO_X_Table', iz, ix return end if x_tables(ix)% co_tables => co_tables if (CO_dbg) write(*,*) 'Setup_Kap_CO_X_Table: allocate co_tables', iz, ix, num_tables, status if (CO_dbg) write(*,*) 'Setup_Kap_CO_X_Table: associated(x_tables(ix)% co_tables)', & associated(x_tables(ix)% co_tables), associated(co_tables), ix Are you familiar with pointers in fortran95? allocate(co_tables(num_tables), STAT=status) allocates storage and sets the pointer co_tables the status == 0 means the allocation was okay x_tables(ix)% co_tables => co_tables copies the pointer so that x_tables(ix)% co_tables points to the same thing as co_tables associated(p) is true if the pointer p points to an allocated structure. in this case x_tables(ix)% co_tables and co_tables should both give true for associated, and that is in fact what I get when I run it but on your machine we get this: Setup_Kap_CO_X_Table: associated(x_tables(ix)% co_tables) F T 4 so associated(x_tables(ix)% co_tables) is false -- that's bad and very bogus. hopefully a new ifort will do better. let me know. Thanks, Bill |