#pragma once

/*     ----------------------------------------------------

         NOTICE OF COPYRIGHT AND OWNERSHIP OF SOFTWARE

         Copyright 2004, The Johns Hopkins University
            School of Medicine. All rights reserved.
			For research use only; commercial use prohibited.
			Distribution without permission of Raimond L. Winslow
			not permitted. rwinslow@bme.jhu.edu

         Name of Program: Guinea Pig C++ (Coupled) (GPC_Coupled)
         Version: Documented Version, version 1.0
         Date: February 2004

       -----------------------------------------------------  
*/
/*	   This file contains Index definitions 
	   that should correspond with states variables and
	   initial conditions.

	   The reason for using indexing like this, is to make
	   changing order of and adding of states easier. This
	   should be the only place where state numbers are referred
	   to explicitly.

	   It also contains fixed defined physical constants and any hard 
	   coded parameters.

*/
//Switch to parameter reading for these where possible
#define	RT_over_F 26.708186528497409326424870466321
#define Faraday	96.5
#define MAXSTATES 50	//Was 200, redifined as the total number of states
#define LHospitalThreshold 1e-7

//Problem size definitions
#define PROBLEM_SIZE_GPC 47
#define PROBLEM_SIZE_GPC_ALG 46
#define PROBLEM_SIZE_GPC_CK 50
#define PROBLEM_SIZE_GPC_CK_ALG 49
#define PROBLEM_SIZE_FORCE 7
#define PROBLEM_SIZE_MITO 11
#define PROBLEM_SIZE_MITO_ASP 12

//Must be the State maximum/minimum, for algebraic mode
#define index_V     0	
#define index_Alg_Offset	1
#define index_mNa   1    
#define index_hNa   2  
#define index_jNa   3  
#define index_xKs   4 
#define index_Nai   5  
#define index_Ki    6    
#define index_Cai   7  
#define index_CaNSR  8  
#define index_CaSS   9    
#define index_CaJSR  10  
#define index_C1_RyR   11  
#define index_O2_RyR   12
#define index_C2_RyR   13  
#define index_C0   14  
#define index_C1   15  
#define index_C2   16  
#define index_C3   17  
#define index_C4   18 
#define index_Open  19  
#define index_CCa0  20  
#define index_CCa1  21  
#define index_CCa2  22  
#define index_CCa3  23  
#define index_CCa4  24  
#define index_OCa   25
#define index_yCa	26  
#define index_HTRPNCa  27
//Force model
#define index_Force_Offset	28
#define index_LTRPNCa  28  
#define index_N0       29
#define index_N1       30
#define index_P0       31
#define index_P1       32
#define index_P2       33
#define index_P3       34

/**after ATP mod**/
#define index_ATPi		35

/**after Mitochondria mod**/
//Mitochondria model
#define index_Mito_Offset	36
#define index_Cam      36
#define index_ADPm     37
#define index_Dpsi     38
#define index_NADH     39
#define index_ISOC     40
#define index_AKG      41
#define index_SCoA     42
#define index_Succ     43
#define index_FUM      44
#define index_MAL      45
#define index_Oaa      46
#define index_ASP      47

/**after ATP & creatine kinase mod**/
#define index_ATPi_cyto	47	//Uses ASP's index since ASP isn't in the coupled model
#define index_CrPi_cyto	48
#define index_CrPi_mito	49