I am confused that the syntax in the subroutine of fortran code as following:
subroutine X(lr_orth_response)(mesh, st, lr, omega)
type(mesh_t), intent(in) :: mesh
type(states_t), intent(in) :: st
type(lr_t), intent(inout) :: lr
R_TYPE, intent(in) :: omega
integer :: ist, ik
PUSH_SUB(X(lr_orth_response))
do ik = st%d%kpt%start, st%d%kpt%end
do ist = 1, st%nst
call X(lr_orth_vector) (mesh, st, lr%X(dl_psi)(:,:, ist, ik), ist, ik, omega)
end do
end do
POP_SUB(X(lr_orth_response))
end subroutine X(lr_orth_response)
I've checked all Fortran standards and I cannot find any useful info about it! Does anyone know what's the label lr_orth_response? Also, accessing to data by the pointer is also confused a little bit in this line lr%X(dl_psi)(:,:, ist, ik), ist, ik, omega), in which lr is a new type lr_t defined by user but there is no member functions or variables named X(dl_psi).