Доброго всем времени суток!
Вот кусок из моей программы:
Код:
MODULE TYPEDECL
public PLOT, TRAJ
TYPE PLOT
double precision, allocatable :: s1(:,:), s2(:,:), s3(:,:), s4(:,:), s5(:,:), s6(:,:)
END TYPE PLOT
END MODULE TYPEDECL
...
TYPE (PLOT) :: state, state1
...
allocate(&
state%s1(1:nk(1),1:poplength),state%s2(1:nk(2),1:poplength),state%s3(1:nk(3),1:poplength),&
state%s4(1:nk(4),1:poplength),state%s5(1:nk(5),1:poplength),state%s6(1:nk(6),1:poplength),&
state1%s1(1:nk(1),1:poplength),state1%s2(1:nk(2),1:poplength),state1%s3(1:nk(3),1:poplength),&
state1%s4(1:nk(4),1:poplength),state1%s5(1:nk(5),1:poplength),state1%s6(1:nk(6),1:poplength))
Я хотел бы иметь возможность совершать алгебраические операции с переменными произвольного типа, как с обычными числами, то есть
Код:
state = state + state1
Вместо того, чтобы прописывать сложение для кажлого элемента:
Код:
...
state1%s1(1:nk(1),1:poplength) = state1%s1(1:nk(1),1:poplength) +state%s1(1:nk(1),1:poplength)
state1%s2(1:nk(2),1:poplength) = state1%s2(1:nk(2),1:poplength) +state%s2(1:nk(2),1:poplength)
state1%s3(1:nk(3),1:poplength) = state1%s3(1:nk(3),1:poplength) +state%s3(1:nk(3),1:poplength)
state1%s4(1:nk(4),1:poplength) = state1%s4(1:nk(4),1:poplength) +state%s4(1:nk(4),1:poplength)
state1%s5(1:nk(5),1:poplength) = state1%s5(1:nk(5),1:poplength) +state%s5(1:nk(5),1:poplength)
state1%s6(1:nk(6),1:poplength) = state1%s6(1:nk(6),1:poplength) +state%s6(1:nk(6),1:poplength)
...