+KEEP,zinit.
*CMZ :          26/07/2004  19.41.10  by  Jean-Yves Grandpeix
*CMZ :  1.00/03 04/02/2004  19.02.38  by  Alain Lahellec
*CMZ :  1.00/02 30/01/2004  16.42.06  by  Alain Lahellec
*CMZ :  1.00/09 21/01/2004  18.00.57  by  Alain Lahellec
*CMZ :  1.00/08 20/01/2004  21.49.17  by  Alain Lahellec
*CMZ :  1.00/07 20/01/2004  02.02.50  by  Alain Lahellec
*CMZ :  1.00/06 19/01/2004  22.19.12  by  Alain Lahellec
*CMZ :  1.00/05 15/01/2004  21.12.38  by  Alain Lahellec
*CMZ :  1.00/04 02/01/2004  23.16.57  by  Alain Lahellec
*CMZ :  1.00/03 24/12/2003  15.40.32  by  Alain Lahellec
*CMZ :  1.00/02 23/12/2003  20.03.17  by  Alain Lahellec
*CMZ :  1.00/01 24/06/99  20.32.20  by  Alain LAHELLEC
*CMZ :  1.00/00 31/05/99  19.18.44  by  Leseth & LMD
*-- Author : Alain LAHELLEC
! ***************************************************************
!
!
!------------------------------------------------------------------
!
! ***************************************************************
&'Z_Pr:#;'='WRITE(*,*)''   #1 :'';WRITE(*,*)''   '',#1;'
&'Z_Pr/#/:#;'='WRITE(*,*)'' {#1} #2 :'';WRITE(*,*)''   '',#2;'
&'Z_Pr:((#,#=#),#=#);'='WRITE(*,*)'' ((#1,#2=#3),#4=#5) :'';
  DO#I#C #4=#5;#C;WRITE(*,*)''   '',(#1,#2=#3);'
&'Z_Pr/#/:((#,#=#),#=#);'='WRITE(*,*)'' {#1} ((#2,#3=#4),#5=#6) :'';
  DO#I#C #5=#6;#C;WRITE(*,*)''   '',(#2,#3=#4);'
;
&'Z_Pr:#;'='WRITE(*,*)''   #1 :'';WRITE(*,*)''   '',#1;'
&'Z_Pr/#/:#;'='WRITE(*,*)'' {#1} #2 :'';WRITE(*,*)''   '',#2;'
&'Z_Pr:((#,#=#),#=#);'='WRITE(*,*)'' ((#1,#2=#3),#4=#5) :'';
  DO#I#C #4=#5;#C;WRITE(*,*)''   '',(#1,#2=#3);'
&'Z_Pr/#/:((#,#=#),#=#);'='WRITE(*,*)'' {#1} ((#2,#3=#4),#5=#6) :'';
  DO#I#C #5=#6;#C;WRITE(*,*)''   '',(#2,#3=#4);'
;
!********************************************************************
!********************************************************************
! Flag : modzprint : sories diverses aux pas modzprint, et +1
!        Zsensib : demande de calcul des sensibilites
!        Zback : adjoint au retour
!        Zcommand : utilisation d'une loi de commande
!                   soit deja sur fichier : Zcommand = .flase. (defaut)
!                   soit une loi explicite : Zcommand =,True.
!                   ( dans ce cas, la rentrer dans principal cf <<>> )
!                   [ on pourra prevoir un +seq. ]
!********************************************************************
!********************************************************************

!%%%%%%%%%%%%%%%%%%%%%%
! Parameters
!%%%%%%%%%%%%%%%%%%%%%%

     dt=.005;
     nstep=2;
     modzprint = 1;
;
     time=0.;
;
! parametres
   AcCoA          =4.0 "micro-M" "[0.1,10]" "= Input to the whole cycle";
   Ca_i_param     =0.02 "micro-M" "[0.02, 1.2]" ;
   Na_i_param     =10. "mM" ;
   ATP_i_param    =6.5 "mM" ;
   ADP_i_param    =0.05 "mM" ;
   V_O2_param     =10."mM/s" "Rate of oxygen consumption";
   V_He_param     =50. "= 5*V_O2, au pif !!!"
              "Rate of H trsprt across membrane driven by NADH oxydation";
   V_He_F_param   =50.  " au pif !!!"
              "Rate of H trsprt across membrane driven by FADH2 oxydation";
   V_Hu_param     =15. "= 3*V_ATPase, au pif !!!"
              "H uptake rate by mitochondrial via F1F0ATPase";
   V_ATPase_param =5. "mM/s" "Rate of the F1F0 ATP synthase";
   Vmax_ANT       =0.05 "mM/s" "[0.05,24.0]"
                        "Max rate of the Adenine Nucleotide Translocator" ;
   Vmax_uni       =0.625 "micro-M/s" "0.625,1.25"
                        "Max rate of the uniport Ca++ transport" ;
   Vmax_NaCa      =0.005 "mM/s" "[0.005,0.2]"
                        "Max rate of Na+/Ca++ antiporter" ;
!
   ET_CS          =0.4 "mM" ;
   ET_IDH         =0.109 "mM" ;
   ET_KGDH        =0.5 "mM" ;
   ET_SDH         =0.5 "mM" ;
   ET_MDH         =0.154 "mM" ;
!
   Km_MAL         =1.493 "mM" ;
   Km_NAD         =0.2244 "mM" ;
   Km_CoA         =1.26 e-2 "mM" ;
   Km_OAA         =6.4 e-4 "mM" ;
   Km_ISOC        =1.52 "mM" ;
   Km_alpha_KG    =1.94 "mM" ;
   Ka_ADP         =6.2 e-2 "mM" ;
   Ka_Ca          =0.00141 "mM" ;
   Ki_NADH        =0.19 "mM" ;
   C_Kint         =1. "mM" ;
   Kcat_CS        =3.2 "s-1" ;
   Kf_ACO         =12.5 "s-1" ;
   Kcat_IDH       =1.94 " s-1" "[1.94,16.3]" ;
   KE_ACO         =2.22 ;
   Kh_1            =8.1 e-5 "mM" ;
   Kh_2            =5.98 e-5 "mM" ;
   Kh1            =1.13 e-5 "mM" ;
   Kh2            =26.7 "mM" ;
   Kh3            =6.68 e-9 "mM" ;
   Kh4            =5.62  e-6 "mM" ;
   Kcat_KGDH      =0.15 "s-1" "[0.15,5.0]" ;
   Kd_Mg          =0.0308 "mM" ;
   Kd_Ca          =1.27 e-3 "mM" ;
   kf_SL          =0.127 "mM-1 s-1" ;
   KE_SL          =3.115 ;
   Kcat_SDH       =1. "s-1" ;
   Km_Suc         =3.0 e-2 "mM" ;
   Kisdh_OAA      =0.15 "mM" ;
   Ki_FUM         =1.3 "mM" ;
   Ki_OAA         =3.1 e-3 "mM" ;
   Kcat_MDH       =27.75 "s-1" ;
   kf_FH          =0.83 "s-1" ;
   Ke_FH          =1. ;
   kf_AAT         =0.644 "s-1" ;
   Ke_AAT         =6.6 ;
   k_C_ASP        =0.01 "s-1" ;
!
   KNa            =9.4 "mM" ;
   KCa            =3.75 e-4 "mM" ;
!
   delta_psi_0    =0.091 "V" ;
!
   f_coef         =0.0003 ;
   H_plus         =2.5 e-5 "mM";
   delta_pH       =-0.6 "pH units" ;
   gH             = 0.01 "mM/(s V)" ;
   CoA            =0.02 "mM" ;
   Cm             =15.0 "mM" "total mito adenine nucleotides" ;
   C_PN           =10.0 "mM" "total mito pyridine nucleotides" ;
   C_mito         =1.812 "mM/V" "inner membrane capacitance" ;
   T              =310.16 "K";
   bbb            =0.5 ;
   hhh            =0.5 ;
   Faraday        =96500. "C/M";
   R              =8.314 "J/M/K";
   print*,'***************************************';
   print*,'Krebs cycle :';
   z_pr: Ca_i_param,Na_i_param, ATP_i_param, ADP_i_param,
   V_O2_param, V_He_param, V_He_F_param, V_Hu_param,
   V_ATPase_param, ET_CS, ET_IDH, ET_KGDH, ET_SDH, ET_MDH ;
   print*,'***************************************';

       OPEN(50,FILE='title.tex',STATUS='UNKNOWN');
       write(50,5000) Ca_i_param,Na_i_param, ATP_i_param, ADP_i_param,
   V_O2_param, V_He_param, V_He_F_param, V_Hu_param,
   V_ATPase_param, ET_CS, ET_IDH, ET_KGDH, ET_SDH, ET_MDH ;
   5000;format('Krebs par::',5(1X, e13.5));
       close(50);

!%%%%%%%%%%%%%%%%%%%%%%
! Transfers definition
!%%%%%%%%%%%%%%%%%%%%%%
! commandes uy_com :
!  Zcommand = .True.;
!
    <i=1,np; ux_com(i)=0.;>;<j=1,mp; uy_com(j)=0.;>;
!
   "Ca_i"    f_set phi_tef(1) = Ca_i_param ;
   "Na_i"    f_set phi_tef(2) = Na_i_param ;
   "ATP_i"   f_set phi_tef(3) = ATP_i_param ;
   "ADP_i"   f_set phi_tef(4) = ADP_i_param ;
   "ATP_m"   f_set phi_tef(5) = Cm - ADP_m ;
   "NAD"     f_set phi_tef(6) = C_PN - NADH ;
   "CIT"     f_set phi_tef(7) = C_Kint -
          (ISOC + alpha_KG + SCoA + Suc + FUM + MAL + OAA) ;
     f_set   MaM_CoA = Km_CoA/AcCoA ;
     f_set   MaM_OAA = Km_OAA/OAA ;
   "V_CS"    f_set phi_tef(8) = Kcat_CS*ET_CS /
          (1.0 + MaM_CoA + MaM_OAA + MaM_CoA*MaM_OAA) ;
   "V_ACO"   f_set phi_tef(9) = Kf_ACO*(CIT - ISOC/KE_ACO) ;
     f_set MaM_ISOC = (Km_ISOC/ISOC)**ni /
          ( (1.0 + ADP_m/Ka_ADP)*(1.0 + Ca_m/Ka_Ca)) ;
     f_set MaM_NADH = Km_NAD/NAD*(1.0 + NADH/Ki_NADH) ;
   "V_IDH"   f_set phi_tef(10) = Kcat_IDH * ET_IDH /
          (1.0 + H_plus/Kh_1 + Kh_2/H_plus + MaM_ISOC + MaM_NADH +
                 MaM_ISOC*MaM_NADH) ;
   "V_KGDH"  f_set phi_tef(11) = Kcat_KGDH*ET_KGDH /
          (1.0 + (Km_alpha_KG/alpha_KG)**n_alpha_KG/
                   ((1.0 + Mg/Kd_Mg)*(1.0 + Ca_m/Kd_Ca)) +
     (Km_NAD/NAD)/((1.0 + Mg/Kd_Mg)*(1.0 + Ca_m/Kd_Ca)) ) ;
   "V_SL"    f_set phi_tef(12) = kf_SL*(SCoA*ADP_m - Suc*ATP_m*CoA/Ke_SL) ;
   "V_SDH"   f_set phi_tef(13) = Kcat_SDH*ET_SDH /
     (1.0 + Km_Suc*(1.0 + OAA/Kisdh_OAA)*(1.0 + FUM/Ki_FUM)) ;
             f_set fh_a =   1.0 /
     (1.0 + H_plus/kh1 + H_plus**2/(kh1*kh2)) + k_offset ;
             f_set fh_i = ( 1.0 /
     (1.0 + kh3/H_plus + (kh3*kh4)/H_plus**2) + k_offset )**2 ;
             f_set MaM_MAL = (Km_MAL/MAL) * (1.0 + OAA/Ki_OAA);
             f_set MaM_NAD = Km_NAD/NAD ;
   "V_MDH"   f_set phi_tef(14) = Kcat_MDH * ET_MDH * fh_a * fh_i /
       (1. + MaM_MAL + MaM_NAD + MaM_MAL*MaM_NAD) ;
   "V_FH"    f_set phi_tef(15) =kf_FH * (FUM - MAL/Ke_FH) ;
   "V_AAT"   f_set phi_tef(16) = kf_AAT * (OAA*GLU - alpha_KG*ASP/Ke_AAT) ;
   "V_C_ASP" f_set phi_tef(17) = k_C_ASP*ASP ;
   "V_O2"    f_set phi_tef(18) = V_O2_param ;
   "V_He"    f_set phi_tef(19) = V_He_param ;
   "V_He_F"  f_set phi_tef(20) = V_He_F_param ;
       f_set delta_mu_H = (R*T/Faraday)*delta_pH + delta_psi_m ;
   "V_Hleak" f_set phi_tef(21) = gH * delta_mu_H ;
   "V_Hu"    f_set phi_tef(22) = V_Hu_param ;
   "V_ATPase"f_set phi_tef(23) = V_ATPase_param ;
   "V_ANT"   f_set phi_tef(24) = Vmax_ANT *
    (1.0 - 0.05*ATP_i*0.45*0.8*ADP_m/(0.45*ADP_i*0.05*ATP_m)) /
    ((1.0 + 0.05*ATP_i/(0.45*ADP_i)*exp(-hhh*Faraday*delta_psi_0/(R*T)))
    *(1.0 + 0.45*0.8*ADP_m/(0.05*ATP_m)) ) ;
   "V_uni"   f_set phi_tef(25) = Vmax_uni*(Ca_i/K_trans)*(1.0 + Ca_i/K_trans)
    * 2.0*Faraday*(delta_psi_m - delta_psi_0)/(R*T) /
    ( (1.0 + Ca_i/K_trans)**4 + (L/(1.0 + Ca_i/K_act)**na) *
      (1.0 - exp(-2.0*Faraday*(delta_psi_m - delta_psi_0)/(R*T))) ) ;
   "V_NaCa"  f_set phi_tef(26) = Vmax_NaCa *
         exp(bbb*Faraday*(delta_psi_m - delta_psi_0)/(R*T)) *
         exp(alog(Ca_i/Ca_m)) /
         ( (1.0 + KNa/Na_i)**n * (1.0 + KCa/Ca_m)) ;
!
     f_set   Ca_i    = ff(1) ;
     f_set   Na_i    = ff(2) ;
     f_set   ATP_i   = ff(3) ;
     f_set   ADP_i   = ff(4) ;
     f_set   ATP_m   = ff(5) ;
     f_set   NAD     = ff(6) ;
     f_set   CIT     = ff(7) ;    "Citric acid"
     f_set  V_CS     = ff(8) ;    "Citrate synthase"
     f_set  V_ACO    = ff(9) ;
     f_set  V_IDH    = ff(10);
     f_set  V_KGDH   = ff(11);
     f_set  V_SL     = ff(12);
     f_set  V_SDH    = ff(13);     "Succinate de-hydrogenase"
     f_set  V_MDH    = ff(14);
     f_set  V_FH     = ff(15);
     f_set  V_AAI    = ff(16);
     f_set  V_C_ASP  = ff(17);
     f_set  V_O2     = ff(18);
     f_set  V_He     = ff(19);
     f_set  V_He_F   = ff(20);
     f_set  V_Hleak  = ff(21);
     f_set  V_Hu     = ff(22);
     f_set  V_ATPase = ff(23);
     f_set  V_ANT    = ff(24);
     f_set  V_uni    = ff(25);
     f_set  V_NaCa   = ff(26);
!
!%%%%%%%%%%%%%%%%%%%%%%
! Cells definition
!%%%%%%%%%%%%%%%%%%%%%%
     f_set deta_tef(1) = V_ANT - (V_ATPase + V_SL) ;
     f_set deta_tef(2) = -V_O2 + V_IDH + V_KGDH + V_MDH ;
     f_set deta_tef(3) = V_ACO - V_IDH ;
     f_set deta_tef(4) = V_AAT + V_IDH - V_KGDH ;
     f_set deta_tef(5) = V_KGDH - V_SL ;
     f_set deta_tef(6) = V_SL - V_SDH ;
     f_set deta_tef(7) = V_SDH - V_FH ;
     f_set deta_tef(8) = V_FH - V_MDH ;
     f_set deta_tef(9) = V_MDH - (V_CS + V_AAT) ;
     f_set deta_tef(10) = V_AAT - V_C_ASP ;
     f_set deta_tef(11) = f_coef * (V_uni - V_NaCa) ;
     f_set deta_tef(12) = (V_He + V_He_F -
                    (V_Hu+V_ANT+V_Hleak+V_NACA+2.0*V_uni)) /C_mito ;
     f_set ADP_m       = eta(1) ;    "ADP dans la mitochondrie"
     f_set NADH        = eta(2) ;
     f_set ISOC        = eta(3) ;    "Iso-citrate"
     f_set alpha_KG    = eta(4) ;    "alpha ceto-glutarate"
     f_set SCoA        = eta(5) ;    "Succinate Co-enzyme A"
     f_set Suc         = eta(6) ;    "Succinate"
     f_set FUM         = eta(7) ;    "Fumarate"
     f_set MAL         = eta(8) ;    "Malate"
     f_set OAA         = eta(9) ;    "Oxalo acetate"
     f_set ASP         = eta(10) ;   "Aspartame"
     f_set Ca_m        = eta(11) ;   "Calcium dans la mitochondrie"
     f_set Delta_psi_m = eta(12) ;   "ddp entre mitochondrie et environnement"
!
!     Etat initial
!     ------------
!
!
     eta(1) = 1.;
     eta(2) = 1.;
     eta(3) = 1.;
     eta(4) = 1.;
     eta(5) = 1.;
     eta(6) = 1.;
     eta(7) = 1.;
     eta(8) = 1.;
     eta(9) = 1.;
     eta(10) = 1.;
     eta(11) = 1.;
     eta(12) = 1.;
;
! il faut deja initialiser les ff parametres
  < j = 1,mp; ff(j) = 0.5555; >
! -------------
! Sensibilites
! -------------
     <i=1,np;  sens(i)=0.; >;

!ZSensib = .true.;
!  sens(2)=1.;
! Choix d'une et une seule sensibilite
     do j=1,mp
     < dfdpi(j)=0.;
     >;
!     dfdpi(6)=1.;

! -------------
!   Adjoint
! -------------
!Zback=.true.;
! Initialisation v(T) -> pour zinit-adjoint
!  F_set cout_Psi = eta(2);
! et f_set cout_l integrande de la fontion de cout
!  tau_coup = 50.;
!  F_set cout_l = eta(2)*exp(-time/tau_cout);
!  F_set cout_l = eta(2);
!cout_l=0.;
