32 INTEGER,
INTENT (INOUT) :: ifail
35 TYPE (solver_io),
INTENT (INOUT) :: solver
46 REAL (IDS_REAL) :: rho(solver%nrho)
47 REAL (IDS_REAL) :: rhomax, rhomax2
49 REAL (IDS_REAL) :: amix
51 REAL (IDS_REAL) :: y(solver%nrho), ym(solver%nrho)
52 REAL (IDS_REAL) :: dy(solver%nrho)
53 REAL (IDS_REAL) :: yy(solver%nrho)
54 REAL (IDS_REAL) :: dyy(solver%nrho)
56 REAL (IDS_REAL) :: a(solver%nrho), b(solver%nrho)
57 REAL (IDS_REAL) :: c(solver%nrho), d(solver%nrho)
58 REAL (IDS_REAL) :: e(solver%nrho), f(solver%nrho)
59 REAL (IDS_REAL) :: g(solver%nrho), h
60 REAL (IDS_REAL) :: dd(solver%nrho), de(solver%nrho)
62 REAL (IDS_REAL) :: v(2), u(2), w(2)
69 REAL (IDS_REAL) :: x(solver%nrho)
71 REAL (IDS_REAL) :: sol(solver%nrho)
72 REAL (IDS_REAL) :: dsol(solver%nrho)
74 REAL (IDS_REAL) :: as(solver%nrho), bs(solver%nrho)
75 REAL (IDS_REAL) :: cs(solver%nrho)
77 REAL (IDS_REAL) :: acron(solver%nrho), bcron(solver%nrho)
78 REAL (IDS_REAL) :: ccron(solver%nrho), dcron(solver%nrho)
82 REAL (IDS_REAL) :: mata_in(solver%nrho,1,1), matb_in(solver%nrho,1,1)
83 REAL (IDS_REAL) :: matc_in(solver%nrho,1,1), matd_in(solver%nrho,1)
87 integer,
parameter :: nbeq = 1
88 REAL(IDS_REAL) :: dt_in
89 REAL(IDS_REAL) :: dx_in
90 REAL(IDS_REAL) :: sca_f_in
91 REAL(IDS_REAL),
dimension(2,nbeq,3) :: t0_in,t1_in
92 REAL(IDS_REAL),
dimension(2,nbeq) :: v0_in,v1_in
94 REAL(IDS_REAL),
dimension(nbeq) :: mode_in
110 equation_loop1:
DO idim = 1, ndim
112 flag = solver%EQ_FLAG(idim)
115 IF (flag.EQ.0) goto 20
129 rho_loop1:
DO irho=1,nrho
130 rho(irho) = solver%RHO(irho)
132 y(irho) = solver%Y(idim,irho)
133 dy(irho) = solver%DY(idim,irho)
134 ym(irho) = solver%YM(idim,irho)
136 a(irho) = solver%A(idim,irho)
137 b(irho) = solver%B(idim,irho)
138 c(irho) = solver%C(idim,irho)
139 d(irho) = solver%D(idim,irho)
140 e(irho) = solver%E(idim,irho)
141 f(irho) = solver%F(idim,irho)
142 g(irho) = solver%G(idim,irho)
148 rhomax2 = rhomax*rhomax
153 rho_loop2:
DO irho=1,nrho
155 acron(irho) = d(irho) / c(irho) / rhomax2
156 bcron(irho) = (dd(irho) / c(irho) - e(irho) / c(irho)) / rhomax
161 rho_loop3:
DO irho=1,nrho
164 ccron(irho) = -de(irho) / c(irho) - g(irho)
165 dcron(irho) = f(irho)
169 ccron = ccron + (b-a)/h
187 mata_in(1:nrho,ipsi,ipsi)=acron(1:nrho)
191 matb_in(1:nrho,ipsi,ipsi)=bcron(1:nrho)
195 matc_in(1:nrho,ipsi,ipsi) = ccron(1:nrho)
199 matd_in(1:nrho,ipsi) = dcron(1:nrho)
210 t0_in(:,1,3) = 0.e0_ids_real
215 t1_in(:,1,3) = 0.e0_ids_real
243 dx_in = 1.e0_ids_real/(nrho-1)
245 sca_f_in = 0.e0_ids_real
252 mata_in,matb_in,matc_in,matd_in, &
253 mata_in,matb_in,matc_in,matd_in, &
254 nrho,nbeq,nbeq,dx_in,dt_in,sca_f_in, &
255 t0_in,t1_in,v0_in,v1_in,mode_in)
257 y = y*(1.e0_ids_real-amix) + yy*amix
260 solver%DY(idim,:) = dy
280 END DO equation_loop1
306 SUBROUTINE derivn10(N,X,Y,DY1) !AF 10.Jul.2010 - this is actually the same as DERIVN1 in solver1 - should this clone remain here for independence from solver 1?
316 REAL (IDS_REAL) :: x(n), &
319 REAL (IDS_REAL) :: h(n),dy2(n)
326 dy1(i)=((y(i+1)-y(i))*h(i-1)/h(i)+(y(i)-y(i-1))*h(i)/h(i-1)) &
328 dy2(i)=2.e0_ids_real*((y(i-1)-y(i))/h(i-1)+(y(i+1)-y(i))/h(i)) &
332 dy1(1)=dy1(2)-dy2(2)*h(1)
333 dy1(n)=dy1(n-1)+dy2(n-1)*h(n-1)
346 integer,
intent(in) :: nbrho
347 real(DP),
dimension(nbrho) :: e
355 if ( (abs(e(1)).gt.huge(e(1))) .or. (abs(e(1)).eq.0) )
then
356 e(1) = (61.0_8/46.0_8) * e(2) - (9.0_8/23.0_8) * e(3) + (3.0_8/46.0_8) * e(4)
367 integer :: dimk,dimm,dimmat,dimbb,dimn
368 real(kind=8),
dimension(:,:),
pointer :: f,fp,dfpdx,dfpdx2
369 real(kind=8),
dimension(:,:),
allocatable :: matd,matdp
370 real(kind=8),
dimension(:,:,:),
pointer :: T0,T1
371 real(kind=8),
dimension(:,:,:),
allocatable :: mata,matb,matc, &
373 real(kind=8),
dimension(:,:),
pointer :: V0,V1
374 integer,
dimension(:),
allocatable :: mode
376 real(kind=8),
dimension(:,:),
allocatable :: mats
377 real(kind=8),
dimension(:,:),
allocatable :: matu,matv,matw,matx,maty,matz
378 real(kind=8),
dimension(:),
allocatable,
target:: mat_coo,mat_csr
379 real(kind=8),
dimension(:),
allocatable,
target:: vectbb
380 integer,
dimension(:),
allocatable,
target :: cooi,cooj,csri,csrj
381 real(kind=8),
pointer:: dx,dt,sca_f
382 integer :: verbose = 0
408 mata_in,matb_in,matc_in,matd_in, &
409 matap_in,matbp_in,matcp_in,matdp_in, &
410 dimk_in,dimn_in,dimm_in,dx_in,dt_in,sca_f_in, &
411 t0_in,t1_in,v0_in,v1_in,mode_in,dfpdx_in,dfpdx2_in)
477 integer,
intent(in) :: dimk_in,dimn_in,dimm_in
478 real(kind=8),
intent(in),
target :: dt_in,dx_in,sca_f_in
479 real(kind=8),
dimension(dimk_in,dimm_in),
target :: f_in,fp_in
480 real(kind=8),
dimension(dimk_in,dimm_in),
target,
optional:: dfpdx_in,dfpdx2_in
481 real(kind=8),
dimension(dimk_in,dimm_in),
target :: matd_in,matdp_in
482 real(kind=8),
dimension(dimk_in,dimm_in,dimm_in),
target :: mata_in,matb_in,matc_in, &
483 matap_in,matbp_in,matcp_in
484 real(kind=8),
dimension(2,dimm_in,3),
target :: t0_in,t1_in
485 real(kind=8),
dimension(2,dimm_in),
target :: v0_in,v1_in
487 real(kind=8),
dimension(:,:,:),
allocatable :: mat_aux
489 real(kind=8),
dimension(dimm_in) :: mode_in
490 integer,
dimension(:),
allocatable :: iwk,cooi_aux
492 real(kind=8) :: dtx2,dt2x,aux
494 integer :: counteri,counterj,counter
495 integer :: interpretatif=0,condlim=0
499 integer,
intent(in) :: interpretatif
503 integer,
intent(in) :: interpretatif
508 write(*,*)
'dans solver',sca_f_in
509 if (sca_f_in==1.0)
then
510 print*,
"Error, the explicit Euler algorithm must not be used"
525 if (present(dfpdx_in)) dfpdx=>dfpdx_in
526 if (present(dfpdx2_in)) dfpdx2=>dfpdx2_in
527 allocate(mata(dimk_in,dimm_in,dimm_in),matb(dimk_in,dimm_in,dimm_in),&
528 matc(dimk_in,dimm_in,dimm_in),matd(dimk_in,dimm_in) )
529 allocate(matap(dimk_in,dimm_in,dimm_in),matbp(dimk_in,dimm_in,dimm_in),&
530 matcp(dimk_in,dimm_in,dimm_in),matdp(dimk_in,dimm_in) )
531 allocate(mode(dimm_in))
549 allocate(mats(dimk,dimm))
550 allocate(matu(2,dimm),matv(2,dimm),matw(2,dimm))
551 allocate(matx(2,dimm),maty(2,dimm),matz(2,dimm))
552 allocate(mat_aux(dimk,dimm,dimm))
554 dimmat=(dimk-2)*dimn*dimn*3 +4*dimn*dimn
556 allocate(vectbb(dimbb),mat_coo(dimmat),cooi(dimmat),cooj(dimmat))
561 interpretatif=sum(mode)
562 if (interpretatif.ne.0) interpretatif=1
565 write(*,*)
'dtx2=',dtx2
567 matb = -2.0_8*dtx2*mata + dt*matc
568 matc = dtx2*mata + dt2x*mat_aux
569 mata = dtx2*mata - dt2x*mat_aux
573 matbp = -2.0_8*dtx2*matap + dt*matcp
574 matcp = dtx2*matap + dt2x*mat_aux
575 matap = dtx2*matap - dt2x*mat_aux
580 mats = sca_f*matd + (1.0_8-sca_f)*matdp + f;
585 condlim=sum(t0(:,:,3))
588 print*,
" boundaries condition of order 2 is not implemented"
596 condlim=sum(t1(:,:,3))
599 print*,
" boundaries condition of order 2 is not implemented"
611 write(*,*)
'dimm=',dimm
613 if (mode(m)==1) cycle
617 mats(k,m)=mats(k,m) + sca_f*(mata(k,n,m)*f(k-1,n)+matb(k,n,m)*f(k,n)+matc(k,n,m)*f(k+1,n)) &
618 + (1.0_8-sca_f)*(matap(k,n,m)*fp(k-1,n)+matbp(k,n,m)*fp(k,n)+matcp(k,n,m)*fp(k+1,n))
633 vectbb(counter) = mats(k,m)
636 vectbb(counter) = vectbb(counter) + sca_f*(matb(k,n,m)*f(k,n) + matc(k,n,m)*f(k+1,n))
647 vectbb(counter) = mats(k,m)
650 vectbb(counter) = vectbb(counter) + sca_f*(mata(k,n,m)*f(k-1,n) + matb(k,n,m)*f(k,n) &
651 + matc(k,n,m)*f(k+1,n))
663 vectbb(counter) = mats(k,m)
666 vectbb(counter) = vectbb(counter) + sca_f*(mata(k,n,m)*f(k-1,n) + matb(k,n,m)*f(k,n))
679 write(*,*)
'counter=',counter
706 print*,
"dimk",dimk,dimn,dimm,counter
707 allocate(iwk(dimbb+1),cooi_aux(dimmat))
708 allocate(mat_csr(dimmat),csri(dimmat),csrj(dimmat))
712 print*,
"SPARSE BIG MATRIX:"
734 fp(k,m) = vectbb(counter)
751 if (verbose > 0)
then
759 deallocate(matu,matv,matw,matx,maty,matz,mats)
760 deallocate(mata,matb,matc,matd,matap,matbp,matcp,matdp)
763 deallocate(mat_coo,cooi,cooj,vectbb)
765 deallocate(mat_coo,cooi,cooj,vectbb,iwk,cooi_aux,mat_csr,csri,csrj)
777 integer,
intent(in) :: option,k
778 integer,
intent(inout) :: counter,counteri,counterj
779 integer :: counteri_aux,counterj_aux
780 real(kind=8),
dimension(dimk,dimm,dimm) :: matp
784 counteri_aux=counteri
785 counterj_aux=counterj
790 counterj=counterj_aux
795 if (counteri==counterj)
then
796 mat_coo(counter)=1.0_8-(1.0_8-sca_f)*matp(k,n,m)
798 mat_coo(counter)=-(1.0_8-sca_f)*matp(k,n,m)
800 if (mat_coo(counter)==0.0)
then
804 cooi(counter)=counteri
805 cooj(counter)=counterj
818 include
'dmumps_struc.h'
819 type(dmumps_struc
) :: mumps_par
824 mumps_par%COMM = mpi_comm_world
830 call dmumps(mumps_par)
833 IF ( mumps_par%MYID .eq. 0 )
THEN
835 mumps_par%N = dimk*dimn
837 mumps_par%NZ = dimmat
853 mumps_par%RHS=>vectbb
855 if (verbose <= 1)
then
867 CALL dmumps(mumps_par)
869 IF ( mumps_par%MYID .eq. 0 .and. verbose > 1)
THEN
870 WRITE( 6, * )
' MUMPS Solution is ',(mumps_par%RHS(i),i=1,mumps_par%N)
874 IF ( mumps_par%MYID .eq. 0 )
THEN
882 CALL dmumps(mumps_par)
883 CALL mpi_finalize(ierr)
895 integer,
intent(in) :: interpretatif
896 integer :: dirichlet=0,neumann=0,m,i
901 matu = t0(:,:,3)/(dx*dx) + t0(:,:,2) / (2.0_8*dx)
902 matv = t0(:,:,1) - 2.0_8*t0(:,:,3) / (dx*dx)
903 matw = t0(:,:,3)/(dx*dx) - t0(:,:,2) / (2.0_8*dx)
906 if (mode(m)==1) cycle
907 if (abs(matw(1,m))>1e-16)
then
908 if (verbose>1) print*,
"cond1 k=1 m=",m
910 if (interpretatif==1.or.dirichlet==1)
then
911 if (verbose>1) print*,
"boundary conditions not compatible"
915 if (abs(matv(1,m))>1e-16)
then
916 if (verbose>1) print*,
"cond2 k=1 m=",m
919 if (verbose>1) print*,
"boundary conditions not compatible"
923 if (verbose>1) print*,
"boundary conditions not supported"
928 if (abs(matw(2,m))>1e-16)
then
929 if (verbose>1) print*,
"cond1p k=1 m=",m
931 if (interpretatif==1.or.dirichlet==1)
then
932 if (verbose>1) print*,
"boundary conditions not compatible"
936 if (abs(matv(2,m))>1e-16)
then
937 if (verbose>1) print*,
"cond2p k=1 m=",m
940 if (verbose>1) print*,
"boundary conditions not compatible"
944 if (verbose>1) print*,
"boundary conditions not supported"
955 if (mode(m)==1) cycle
956 if (abs(matw(1,m))>1e-16)
then
957 matu(1,m) = - matu(1,m)/matw(1,m)
958 matv(1,m) = - matv(1,m)/matw(1,m)
959 matw(1,m) = v0(1,m) /matw(1,m)
961 matb(1,m,i) = matb(1,m,i) + matv(1,m)*mata(1,m,i)
962 matc(1,m,i) = matc(1,m,i) + matu(1,m)*mata(1,m,i)
963 mats(1,m) = mats(1,m) + sca_f*matw(1,m)*mata(1,m,i)
967 matx(1,m) = -matu(1,m)/matv(1,m)
968 maty(1,m) = v0(1,m) /matv(1,m)
973 matb(2,m,i) = matb(2,m,i) + matx(1,m)*mata(2,m,i)
974 mats(2,i) = mats(2,i) + sca_f*maty(1,m)*mata(2,m,i)
979 if (abs(matw(2,m))>1e-16)
then
980 matu(2,m) = - matu(2,m)/matw(2,m)
981 matv(2,m) = - matv(2,m)/matw(2,m)
982 matw(2,m) = v0(2,m) /matw(2,m)
984 matbp(1,m,i) = matbp(1,m,i) + matv(2,m)*matap(1,m,i)
985 matcp(1,m,i) = matcp(1,m,i) + matu(2,m)*matap(1,m,i)
986 mats(1,i) = mats(1,i) + (1.0_8-sca_f)*matw(2,m)*matap(1,m,i)
990 matx(2,m) = -matu(2,m)/matv(2,m)
991 maty(2,m) = v0(2,m) /matv(2,m)
994 matcp(1,m,m) = matx(2,m)/(1.0_8 - sca_f)
995 mats(1,m) = maty(2,m)
997 matbp(2,m,i) = matbp(2,m,i) + matx(2,m)*matap(2,m,i)
998 mats(2,i) = mats(2,i) + (1.0_8-sca_f)*maty(2,m)*matap(2,m,i)
1000 matap(2,m,:) = 0.0_8
1015 integer,
intent(in) :: interpretatif
1016 integer :: dirichlet=0,neumann=0,m,i
1021 matu = t1(:,:,3)/(dx*dx) + t1(:,:,2) / (2.0_8*dx)
1022 matv = t1(:,:,1) - 2.0_8*t1(:,:,3) / (dx*dx)
1023 matw = t1(:,:,3)/(dx*dx) - t1(:,:,2) / (2.0_8*dx)
1026 if (mode(m)==1) cycle
1027 if (abs(matu(1,m))>1e-16)
then
1028 if (verbose>1) print*,
"cond1 k=dimk m=",m
1030 if (interpretatif==1.or.dirichlet==1)
then
1031 if (verbose>1) print*,
"boundary conditions not compatible"
1035 if (abs(matv(1,m))>1e-16)
then
1036 if (verbose>1) print*,
"cond2 k=dimk m=",m
1038 if (neumann==1)
then
1039 if (verbose>1) print*,
"boundary conditions not compatible"
1043 if (verbose>1) print*,
"bondary conditions not supported"
1047 if (abs(matu(2,m))>1e-16)
then
1048 if (verbose>1) print*,
"cond1p k=dimk m=",m
1050 if (interpretatif==1.or.dirichlet==1)
then
1051 if (verbose>1) print*,
"boundary conditions not compatible"
1055 if (abs(matv(2,m))>1e-16)
then
1056 if (verbose>1) print*,
"cond2p k=dimk m=",m
1057 if (neumann==1)
then
1058 if (verbose>1) print*,
"boundary conditions not compatible"
1062 if (verbose>1) print*,
"boundary conditions not supported"
1072 if (mode(m)==1) cycle
1073 if (abs(matu(1,m))>1e-16)
then
1075 matu(1,m) = - matw(1,m)/aux
1076 matv(1,m) = - matv(1,m)/aux
1077 matw(1,m) = v1(1,m) /aux
1079 matb(dimk,m,i) = matb(dimk,m,i) + matv(1,m)*matc(dimk,m,i)
1080 mata(dimk,m,i) = mata(dimk,m,i) + matu(1,m)*matc(dimk,m,i)
1081 mats(dimk,i) = mats(dimk,i) + sca_f*matw(1,m)*matc(dimk,m,i)
1085 matx(1,m) = -matw(1,m)/matv(1,m)
1086 maty(1,m) = v1(1,m) /matv(1,m)
1087 mata(dimk,:,m) = 0.0_8
1088 matb(dimk,:,m) = 0.0_8
1089 mats(dimk,m) = 0.0_8
1091 matb(dimk-1,m,i) = matb(dimk-1,m,i) + matx(1,m)*matc(dimk-1,m,i)
1092 mats(dimk-1,i) = mats(dimk-1,i) + sca_f*maty(1,m)*matc(dimk-1,m,i)
1094 matc(dimk-1,m,:) = 0.0_8
1096 if (abs(matu(2,m))>1e-16)
then
1098 matu(2,m) = - matw(2,m)/aux
1099 matv(2,m) = - matv(2,m)/aux
1100 matw(2,m) = v1(2,m) /aux
1102 matbp(dimk,m,i) = matbp(dimk,m,i) + matv(2,m)*matcp(dimk,m,i)
1103 matap(dimk,m,i) = matap(dimk,m,i) + matu(2,m)*matcp(dimk,m,i)
1104 mats(dimk,i) = mats(dimk,i) + (1.0_8-sca_f)*matw(2,m)*matcp(dimk,m,i)
1108 matx(2,m) = -matw(2,m)/matv(2,m)
1109 maty(2,m) = v1(2,m) /matv(2,m)
1110 matap(dimk,:,m) = 0.0_8
1111 matap(dimk,m,m) = matx(2,m)/(1.0_8 - sca_f)
1112 matbp(dimk,:,m) = 0.0_8
1113 mats(dimk,m) = maty(2,m)
1115 matbp(dimk-1,m,i) = matbp(dimk-1,m,i) + matx(2,m)*matcp(dimk-1,m,i)
1116 mats(dimk-1,i) = mats(dimk-1,i) + (1.0_8-sca_f)*maty(2,m)*matcp(dimk-1,m,i)
1118 matcp(dimk-1,m,:) = 0.0_8
1136 matv = t0(:,:,1)*dx - t0(:,:,2)
1138 print*,
"dx",dx,t0(2,1,1), t0(2,1,2)
1139 print*,
"matv",matv(2,1)
1142 if (mode(m)==1) cycle
1143 matx(1,m) = -matu(1,m)/matv(1,m)
1144 maty(1,m) = maty(1,m)/matv(1,m)
1149 matb(2,m,i) = matb(2,m,i) + matx(1,m)*mata(2,m,i)
1150 mats(2,i) = mats(2,i) + sca_f*maty(1,m)*mata(2,m,i)
1153 if (abs(matv(2,m))>1e-16)
then
1154 matx(2,m) = -matu(2,m)/matv(2,m)
1155 maty(2,m) = maty(2,m)/matv(2,m)
1156 matbp(1,:,m) = 0.0_8
1157 matcp(1,:,m) = 0.0_8
1158 matcp(1,m,m) = matx(2,m)/(1.0_8 - sca_f)
1159 mats(1,m) = maty(2,m)
1161 matbp(2,m,i) = matbp(2,m,i) + matx(2,m)*matap(2,m,i)
1162 mats(2,i) = mats(2,i) + (1.0_8-sca_f)*maty(2,m)*matap(2,m,i)
1164 matap(2,m,:) = 0.0_8
1166 print*,
"Boundaries conditions error",matv(2,m)
1182 matv = t1(:,:,2) + dx*t1(:,:,1)
1187 if (mode(m)==1) cycle
1188 matx(1,m) = -matw(1,m)/matv(1,m)
1189 maty(1,m) = maty(1,m)/matv(1,m)
1190 mata(dimk,:,m) = 0.0_8
1191 matb(dimk,:,m) = 0.0_8
1192 mats(dimk,m) = 0.0_8
1194 matb(dimk-1,m,i) = matb(dimk-1,m,i) + matx(1,m)*matc(dimk-1,m,i)
1195 mats(dimk-1,i) = mats(dimk-1,i) + sca_f*maty(1,m)*matc(dimk-1,m,i)
1197 matc(dimk-1,m,:) = 0.0_8
1198 if (abs(matv(2,m))>1e-16)
then
1199 matx(2,m) = -matw(2,m)/matv(2,m)
1200 maty(2,m) = maty(2,m)/matv(2,m)
1201 matap(dimk,:,m) = 0.0_8
1202 matap(dimk,m,m) = matx(2,m)/(1.0_8 - sca_f)
1203 matbp(dimk,:,m) = 0.0_8
1204 mats(dimk,m) = maty(2,m)
1206 matbp(dimk-1,m,i) = matbp(dimk-1,m,i) + matx(2,m)*matcp(dimk-1,m,i)
1207 mats(dimk-1,i) = mats(dimk-1,i) + (1.0_8-sca_f)*maty(2,m)*matcp(dimk-1,m,i)
1209 matcp(dimk-1,m,:) = 0.0_8
1211 print*,
"Boundaries conditions error",matv(2,m)
subroutine build_matcoo(matp, option, k, counter, counteri, counterj)
subroutine cos_zconversion(e, nbrho)
These subroutines correct the central value (if not finite value)
subroutine derivn10(N, X, Y, DY1)
These subroutines calculate first and second derivatives, DY1 and DY2, of function Y respect to argum...
The SOLVER_IO type includes variables that are used input and output to the nuermical solver of the t...
subroutine cos_pde1solver(f_in, fp_in, mata_in, matb_in, matc_in, matd_in, matap_in, matbp_in, matcp_in, matdp_in, dimk_in, dimn_in, dimm_in, dx_in, dt_in, sca_f_in, T0_in, T1_in, V0_in, V1_in, mode_in, dfpdx_in, dfpdx2_in)
integer function condlimord2_k1(interpretatif)
subroutine solution10(SOLVER, ifail)
This subroutine is prepared to solve single transport equation in standardised form adopted by the ET...
subroutine condlimord1_k1
integer function condlimord2_kk(interpretatif)
The module declares types of variables used by numerical solvers.
subroutine condlimord1_kk