这些代码的哪个Fortran标准?

问题描述

我很困惑fortran代码子例程中的语法如下:

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,lr%X(dl_psi)(:,:,ist,ik),ik,omega)
    end do
  end do
  
  POP_SUB(X(lr_orth_response))
end subroutine X(lr_orth_response)

我已经检查了所有Fortran标准,但找不到任何有用的信息!有人知道lr_orth_response这个标签是什么吗?另外,在该行lr%X(dl_psi)(:,omega)中,指针访问数据也有些混乱,其中lr用户定义的新类型lr_t,但是没有成员函数或变量名为X(dl_psi)

解决方法

这不是纯Fortran。它看起来像必须由某些预处理程序(例如C预处理程序cpp或其变体fpp)进行预处理的源。预处理器将使用某些宏扩展R_TYPEPUSH_SUBPOP_SUBX。一些宏显然依赖于称为lr_orth_response的参数。我们不能不实际看到定义就无法说出该参数在那些宏中的作用,但我们需要您提供更多的代码。它可能用于某些通用编程,但很难猜测其精确程度。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...