@@ -50,8 +50,19 @@ subroutine ode_ebbks1(odefun, extra, y0, nprimeq, neq, t, dt, y, pscal)
5050 real (r8 ), intent (in ) :: dt ! time step
5151 real (r8 ), intent (out ) :: y(neq) ! return values
5252 real (r8 ), optional , intent (out ) :: pscal ! scaling factor
53- external :: odefun
54-
53+ interface
54+ subroutine odefun (extra , y , dt2 , tt , nprimeq , neq , f )
55+ use bshr_kind_mod , only : r8 = > shr_kind_r8
56+ use gbetrType , only : gbetr_type
57+ class(gbetr_type), target :: extra
58+ integer , intent (in ) :: neq ! number of equations
59+ real (r8 ), intent (in ) :: tt ! time stamp
60+ real (r8 ), intent (in ) :: dt2 ! time stepping
61+ integer , intent (in ) :: nprimeq !
62+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
63+ real (r8 ), intent (out ) :: f(neq) ! derivative
64+ end subroutine
65+ end interface
5566 ! !LOCAL VARIABLES:
5667 real (r8 ) :: f(neq)
5768 real (r8 ) :: pscal_loc
@@ -77,7 +88,19 @@ subroutine ode_ebbks2(odefun, extra, y0, nprimeq, neq, t, dt, y)
7788 real (r8 ), intent (in ) :: dt ! time step
7889 real (r8 ), intent (out ) :: y(neq) ! return value
7990
80- external :: odefun
91+ interface
92+ subroutine odefun (extra , y , dt2 , tt , nprimeq , neq , f )
93+ use bshr_kind_mod , only : r8 = > shr_kind_r8
94+ use gbetrType , only : gbetr_type
95+ class(gbetr_type), target :: extra
96+ integer , intent (in ) :: neq ! number of equations
97+ real (r8 ), intent (in ) :: tt ! time stamp
98+ real (r8 ), intent (in ) :: dt2 ! time stepping
99+ integer , intent (in ) :: nprimeq !
100+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
101+ real (r8 ), intent (out ) :: f(neq) ! derivative
102+ end subroutine
103+ end interface
81104 ! !LOCAL VARIABLES:
82105 real (r8 ) :: f(neq)
83106 real (r8 ) :: f1(neq)
@@ -109,9 +132,21 @@ subroutine ode_mbbks1(odefun, extra, y0, nprimeq, neq, t, dt, y, pscal, bstatus)
109132 real (r8 ), intent (in ) :: dt
110133 real (r8 ), intent (out ) :: y(neq)
111134 real (r8 ), optional , intent (out ) :: pscal
135+ interface
136+ subroutine odefun (extra , y , dt2 , tt , nprimeq , neq , f )
137+ use bshr_kind_mod , only : r8 = > shr_kind_r8
138+ use gbetrType , only : gbetr_type
139+ class(gbetr_type), target :: extra
140+ integer , intent (in ) :: neq ! number of equations
141+ real (r8 ), intent (in ) :: tt ! time stamp
142+ real (r8 ), intent (in ) :: dt2 ! time stepping
143+ integer , intent (in ) :: nprimeq !
144+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
145+ real (r8 ), intent (out ) :: f(neq) ! derivative
146+ end subroutine
147+ end interface
112148 type (betr_status_type), intent (out ) :: bstatus
113149
114- external :: odefun
115150
116151 ! !LOCAL VARIABLES:
117152 real (r8 ) :: f(neq)
@@ -169,7 +204,19 @@ subroutine ode_mbbks2(odefun, extra, y0, nprimeq, neq, t, dt, y, bstatus)
169204 real (r8 ), intent (in ) :: dt
170205 real (r8 ), intent (out ) :: y(neq)
171206 type (betr_status_type), intent (out ) :: bstatus
172- external :: odefun
207+ interface
208+ subroutine odefun (extra , y , dt2 , tt , nprimeq , neq , f )
209+ use bshr_kind_mod , only : r8 = > shr_kind_r8
210+ use gbetrType , only : gbetr_type
211+ class(gbetr_type), target :: extra
212+ integer , intent (in ) :: neq ! number of equations
213+ real (r8 ), intent (in ) :: tt ! time stamp
214+ real (r8 ), intent (in ) :: dt2 ! time stepping
215+ integer , intent (in ) :: nprimeq !
216+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
217+ real (r8 ), intent (out ) :: f(neq) ! derivative
218+ end subroutine
219+ end interface
173220
174221 ! !LOCAL VARIABLES:
175222 real (r8 ) :: f(neq)
@@ -298,7 +345,19 @@ subroutine ode_adapt_mbbks1(odefun, extra, y0, nprimeq, neq, t, dt, y, bstatus)
298345 integer , intent (in ) :: nprimeq !
299346 real (r8 ), intent (out ) :: y(neq) ! updated state variable
300347 type (betr_status_type), intent (out ) :: bstatus
301- external :: odefun
348+ interface
349+ subroutine odefun (extra , y , dt2 , tt , nprimeq , neq , f )
350+ use bshr_kind_mod , only : r8 = > shr_kind_r8
351+ use gbetrType , only : gbetr_type
352+ class(gbetr_type), target :: extra
353+ integer , intent (in ) :: neq ! number of equations
354+ real (r8 ), intent (in ) :: tt ! time stamp
355+ real (r8 ), intent (in ) :: dt2 ! time stepping
356+ integer , intent (in ) :: nprimeq !
357+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
358+ real (r8 ), intent (out ) :: f(neq) ! derivative
359+ end subroutine
360+ end interface
302361
303362 ! !LOCAL VARIABLES:
304363 real (r8 ) :: yc(neq) ! coarse time stepping solution
@@ -538,6 +597,19 @@ subroutine ode_rk4(odefun,extra, y0, neq, t, dt, y )
538597 real (r8 ), intent (in ) :: t
539598 real (r8 ), intent (in ) :: dt
540599 real (r8 ), intent (out ) :: y(neq)
600+ interface
601+ subroutine odefun (extra , y , dt2 , tt , neq , f )
602+ use bshr_kind_mod , only : r8 = > shr_kind_r8
603+ use gbetrType , only : gbetr_type
604+ class(gbetr_type), target :: extra
605+ integer , intent (in ) :: neq ! number of equations
606+ real (r8 ), intent (in ) :: tt ! time stamp
607+ real (r8 ), intent (in ) :: dt2 ! time stepping
608+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
609+ real (r8 ), intent (out ) :: f(neq) ! derivative
610+ end subroutine
611+ end interface
612+
541613 ! !LOCAL VARIABLES:
542614 real (r8 ) :: k1(neq)
543615 real (r8 ) :: k2(neq)
@@ -546,7 +618,6 @@ subroutine ode_rk4(odefun,extra, y0, neq, t, dt, y )
546618 real (r8 ) :: kt(neq)
547619 real (r8 ) :: ti, dt05, a
548620 integer :: n
549- external :: odefun
550621
551622 ti = t
552623 dt05 = dt * 0.5_r8
@@ -606,12 +677,25 @@ subroutine ode_rk2(odefun, extra, y0, neq, t, dt, y )
606677 real (r8 ), intent (in ) :: t
607678 real (r8 ), intent (in ) :: dt
608679 real (r8 ), intent (out ) :: y(neq)
680+
681+ interface
682+ subroutine odefun (extra , y , dt2 , tt , neq , f )
683+ use bshr_kind_mod , only : r8 = > shr_kind_r8
684+ use gbetrType , only : gbetr_type
685+ class(gbetr_type), target :: extra
686+ integer , intent (in ) :: neq ! number of equations
687+ real (r8 ), intent (in ) :: tt ! time stamp
688+ real (r8 ), intent (in ) :: dt2 ! time stepping
689+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
690+ real (r8 ), intent (out ) :: f(neq) ! derivative
691+ end subroutine
692+ end interface
693+
609694 ! !LOCAL VARIABLES:
610695 real (r8 ) :: k1(neq)
611696 real (r8 ) :: k2(neq)
612697 real (r8 ) :: ti, dt05
613698 integer :: n
614- external :: odefun
615699
616700 ti = t
617701 dt05 = dt * 0.5_r8
@@ -646,7 +730,19 @@ subroutine ode_adapt_ebbks1(odefun, extra, y0, nprimeq, neq, t, dt, y)
646730 integer , intent (in ) :: nprimeq !
647731 real (r8 ), intent (out ) :: y(neq) ! updated state variable
648732 external :: odefun
649-
733+ interface
734+ subroutine odefun (extra , y , dt2 , tt , nprimeq , neq , f )
735+ use bshr_kind_mod , only : r8 = > shr_kind_r8
736+ use gbetrType , only : gbetr_type
737+ class(gbetr_type), target :: extra
738+ integer , intent (in ) :: neq ! number of equations
739+ real (r8 ), intent (in ) :: tt ! time stamp
740+ real (r8 ), intent (in ) :: dt2 ! time stepping
741+ integer , intent (in ) :: nprimeq !
742+ real (r8 ), intent (in ) :: y(neq) ! updated state variable
743+ real (r8 ), intent (out ) :: f(neq) ! derivative
744+ end subroutine
745+ end interface
650746 ! !LOCAL VARIABLES:
651747 real (r8 ) :: yc(neq) ! coarse time stepping solution
652748 real (r8 ) :: yf(neq) ! fine time stepping solution
@@ -676,9 +772,9 @@ subroutine ode_adapt_ebbks1(odefun, extra, y0, nprimeq, neq, t, dt, y)
676772 tt= tt+ dt2
677773 y= yc
678774 else
679- print * ,' get coarse grid solution'
775+ ! print*,'get coarse grid solution'
680776 call odefun(extra, y, dt2, tt, nprimeq, neq, f)
681- print * ,' ebbks'
777+ ! print*,'ebbks'
682778 call ebbks(y, f, nprimeq, neq, dt2, yc, pscal)
683779
684780 ! get fine grid solution
0 commit comments