zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
U
P±dä%ã@szdZddd…ZdZddlZddlmZdd    lmZdd
lm    Z    m
Z
dd l TiZ d d „Z de ¡jZdZdZdd„ZdS)aJ
 
Build F90 module support for f2py2e.
 
Copyright 2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.
 
NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/02/03 19:30:23 $
Pearu Peterson
 
z$Revision: 1.27 $é
éÿÿÿÿz See `f2py -v`éNé)Ú    capi_maps)Ú    func2subr)Úundo_rmbadnameÚundo_rmbadname1)Ú*cCsPt|ƒr|gSt|ƒsgSg}|dD]$}t|ƒr>| |¡q&|t|ƒ}q&|S)NÚbody)ÚismoduleÚhasbodyÚappendÚfindf90modules)ÚmÚretÚb©rúNd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/f2py/f90mod_rules.pyr"s  ra      external f2pysetdata
      logical ns
      integer r,i
      integer(%d) s(*)
      ns = .FALSE.
      if (allocated(d)) then
         do i=1,r
            if ((size(d,i).ne.s(i)).and.(s(i).ge.0)) then
               ns = .TRUE.
            end if
         end do
         if (ns) then
            deallocate(d)
         end if
      end if
      if ((.not.allocated(d)).and.(s(1).ge.1)) thenz«      end if
      if (allocated(d)) then
         do i=1,r
            s(i) = size(d,i)
         end do
      end if
      flag = 1
      call f2pysetdata(d,allocated(d))zÕ      end if
      if (allocated(d)) then
         do i=1,r
            s(i) = size(d,i)
         end do
         !s(r) must be equal to len(d(1))
      end if
      flag = 2
      call f2pysetdata(d,allocated(d))c$ Cs–ddlm}gggddgdddœdggdœ}d    g}|fd
d „}d    g}|fd d „}t|ƒD]ð}gggg|dggf\}}    }
} } } g}g}g}t|ƒr°|dD]}|  |d¡qœ|d ¡D]:}|d|}|| kr¼tttƒ|ƒs¼|  |¡| |¡q¼t    d|dƒ| r t    dd 
| ¡ƒd    g}|fdd„}d    g}|fdd„}t   |¡}|d|dƒ|d|dƒt |ƒrž|d}t|tƒr–d 
|¡}||ƒ| r¬|dƒ| D]þ}|d|}|  |¡t  |¡}t j|}t  ||¡}|d dd¡ ¡}| dd¡ ¡}|sd}t}|d t|ƒ|d!||t  |¡fƒ|d"t  ||¡ƒt |ƒrŠ|d}t|tƒr~d 
|¡}|d#|ƒt|ƒrx|     d$|d|f¡|
 |    d%¡| d&|¡| d'¡|d(|d|fƒ|d)|    d%ƒ|d*|dt|ƒfƒ|d+ƒ|d,t|d,<tdt|d!ƒdƒ}|d-d. 
d/d0„|Dƒ¡ƒ|d,||d,<|d1|    d%ƒn6|     |¡| d2|¡| d3¡|d4|d|fƒq°| rÀ|d5ƒt|ƒrj|dD]”}t|ƒst    d6|d7›d|d›dƒqÒ|  d8|d¡|d|d9<| |¡\}} t|ƒrz|d,| |d,<|     d:|d|df¡| t j!|dd;¡nb| rÀ|d,| |d,<|     d:|d|df¡| t j"|dd;¡n|     |d¡| |    d%¡g|d<<t#||ƒ}!g|!d=<g|!d><t$||!ƒ}|d?|d|d|d|d|dfƒ| d2|d¡| d@¡|d4|d|dfƒqÒ|dAƒ|dBƒdC|dd. 
|¡|d,f|d,<dD|dkr®dE}"nd}"|dF|"|d|d %¡d. 
|¡fƒ|dG|dƒ|dH|"|d|d %¡|dfƒ|dIƒ|dJ|||dJ<dK|d|d|dfg|dL|dL<|d    ƒ|dM|dƒ|r’t&|ƒD]}#|dN|d|#fƒqv|r´|d 
dOg|¡ƒ|dPƒ|dQƒ|
rÞt&|
ƒD]}#|dR|#ƒqÊ|dSd. 
t&|    ƒ¡ƒ|dT|dƒ|d 
|dU¡ dVdW¡ƒg|dU<|d= dX|dd. 
t&| ƒ¡f¡qXd    |dY<g|dZ<g|d><|d,|dU<t'|d=ƒdkrŠd    |d=<||d,fS)[Nr)ÚrulesÚF_FUNCz arrayobject.hÚ
)Z    includes0Zincludesz"Fortran 90/95 modules:\n")Ú f90modhooksÚinitf90modhooksr
ZneedZ separatorsforÚdocsÚlatexdocÚcSsd|d|f|d<dS)Nz %s
      %srr©ÚlineÚsrrrÚfadd`szbuildhooks.<locals>.faddcSsd|d|f|d<dS©Nz%s
%srrrrrrÚdadddszbuildhooks.<locals>.daddÚnamer
Úvarsz.        Constructing F90 module support for "%s"...
z          Variables: %s
ú cSsd|d|f|d<dSr rrrrrÚcaddzszbuildhooks.<locals>.caddcSsd|d|f|d<dSr rrrrrÚiadd~szbuildhooks.<locals>.iaddz'static FortranDataDef f2py_%s_def[] = {z.\subsection{Fortran 90/95 module \texttt{%s}}
Únotez\begin{description}Zdimsr    z-1ú:z    {"%s",%s,{{%s}},%s, %s},Zrankz\item[]{{}\verb@%s@{}}z--- %szf2py_%s_getdims_%srz.void (*%s)(int*,int*,void(*)(char*,int*),int*)z,void (*)(int*,int*,void(*)(char*,int*),int*)z!    f2py_%s_def[i_f2py++].func = %s;z#subroutine %s(r,s,f2pysetdata,flag)zuse %s, only: d => %s
z integer flag
rz allocate(d(%s))
ú,cSsg|] }d|‘qS)zs(%s)r)Ú.0ÚirrrÚ
<listcomp>®szbuildhooks.<locals>.<listcomp>zend subroutine %szchar *%szchar*z!    f2py_%s_def[i_f2py++].data = %s;z\end{description}z"f90mod_rules.buildhooks: skipping Úblockz%s()Ú
modulenamezf2pywrap_%s_%s)Ú    signatureZexternroutinesrZdocshortza    {"%s",-1,{{-1}},0,0,NULL,(void *)f2py_rout_#modulename#_%s_%s,doc_f2py_rout_#modulename#_%s_%s},zchar *z     {NULL}
};
Ú}z0static void f2py_setup_%s(%s) {
    int i_f2py=0;%sÚ_Z    F_FUNC_USz4extern void %s(f2pyinit%s,F2PYINIT%s)(void (*)(%s));z static void f2py_init_%s(void) {z*    %s(f2pyinit%s,F2PYINIT%s)(f2py_setup_%s);z}
rzN    PyDict_SetItemString(d, "%s", PyFortranObject_New(f2py_%s_def,f2py_init_%s));rz$subroutine f2pyinit%s(f2pysetupfunc)zuse %s, only : %sZ    interfacez end interfacezexternal f2pysetupfuncz external %szcall f2pysetupfunc(%s)zend subroutine f2pyinit%s
rz \subsection{z\subsubsection{z "    %s --- %s"Z routine_defsÚdoc)(rrrr r ÚkeysZl_orZ isintent_hideZ    isprivateZoutmessÚjoinrZ modsign2mapZhasnoteÚ
isinstanceÚlistZgetctypeZ
c2capi_mapZ
getarrdimsÚreplaceÚstripÚ    fgetdims2rZ
get_elsizeZ getarrdocsignZ isallocatableÚ    fgetdims1ÚrangeÚintÚ    isroutineZbuildapiÚ
isfunctionrZcreatefuncwrapperZcreatesubrwrapperZ
applyrulesZ
dictappendÚupperrÚlen)$ZpymodrrZfhooksrr2r!rZsargsZfargsZefargsZmodobjsZnotvarsZonlyvarsZsargspZifargsZmfargsrÚnÚvarZchooksr%Zihooksr&Zvrdr'ÚctÚatÚdmZdmsZ use_fgetdims2ÚapiÚwrapÚarrÚarrrÚ
buildhooksWsr ü  ÿÿ  
 ÿ  
 
 
 
 
 
 
 ÿÿ
ÿ
 
 
ÿ
ÿÿ
 
 
 
 
 ÿ
 
 ý
ÿ
ÿ
ÿÿÿÿ  ÿ ÿ
 rJ)Ú__doc__Ú __version__Z f2py_versionÚnumpyÚnprrrZ crackfortranrrZauxfuncsÚoptionsrZintpÚitemsizer:r9Z fgetdims2_sarJrrrrÚ<module>s    ð