Вызов кода Fortran из python с использованием 'f2py', в то время как код Fortran использует код C ++ - PullRequest
1 голос
/ 01 июля 2019

У меня есть программа на Фортране в форме

PROGRAM main
  USE a_one
  USE a_two
  ...


END PROGRAM main

с makefile:

# Paths
MDIR            =       ./main
SDIR            =       ./solver
ODIR            =       ./obj
CASE            =       $(SDIR)/CASE/test_
TOP             =       .  

# include machine specific settings based on WLT_COMPILE_HOSTNAME environment variable
FC              =       ifort
CC              =       mpic++ #icc
LINKLIB         =       -lstdc++ -shared-intel -lifcore

FFLAGS          =       -fpp -O1 -DPTR_INTEGER8 -warn nousage -module $(ODIR) -g -traceback
CCFLAG          =       -O1 -g -DDATABASE_INTERFACE_LOWERCASE -DDATABASE_APPEND_UNDERSCORE

# Define rule to make .f90 and .f files
$(ODIR)/%.o : $(SDIR)/%.f90 
        $(FC) -c $(FFLAGS) $< -o $@

# Define rule to make C objects
$(ODIR)/%.cc.o : $(SDIR)/C++/%.cxx
        $(CC) $(CCFLAG) -c $< -o $@

# Data structure type: Tree DB (C++ variable size nodes)
CC_OBJ          =       tree.cc.o

# set executable name based on DB and CASE
EXEC        =       $(dir ${CASE})/test_new.out

# Define list of all object files to be made
_OBJ     =  module_a.o module_b.o $(_CASE).o $(_CASE).PARAMS.o $(CC_OBJ)
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))

MAIN_OBJ = $(ODIR)/main.o

All:  my_main

my_main : $(OBJ) $(MAIN_OBJ)
        $(FC) $(FFLAGS) $(OBJ) $(MAIN_OBJ) -o $(EXEC) $(LINKLIB)

Как вы можете видеть, помимо кодов на фортране, есть некоторые используемые коды c ++и в этой программе.Я пытаюсь изменить этот код как подпрограмму

SUBROUTINE main (in_matrix, out_matrix, n)
  USE a_one
  USE a_two
  ...


END SUBROUTINE main

и вызвать его из кода Python.Я следовал инструкциям в

https://modelingguru.nasa.gov/docs/DOC-2343, чтобы использовать для этого 'f2py', и не смог заставить его работать.Затем я понял, что у меня есть C ++ коды, которые, вероятно, вызывают проблему.Мне было интересно, как мне изменить указания в приведенной выше ссылке, чтобы принять во внимание код на С ++.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...