10 #include "petsc_utils.h"
17 using ::opencarp::timer_manager;
31 int trans,
float *duration)
33 bool fmode = (bool) strcmp(f,
"");
34 bool isClamp = dur || fmode;
35 memset(cl, 0,
sizeof(
Clamp));
62 static bool fst =
true;
77 double time = tm->time;
79 if (time <= cl->start)
81 else if (time > cl->
start && time < cl->start+cl->
dur)
86 val = cl->
tr.
s[tm->d_time];
104 memset(cl, 0,
sizeof(
Clamp));
125 int d_time = tm->d_time;
133 log_msg(NULL, 5, 0,
"Cannot clamp %s as the global vector %s is not used!!\n\n", cl->
sv, cl->
sv);
140 int temparray[1] = {0};
142 SVgetfcn svget = miif->
IIF[0]->get_type().get_sv_offset(cl->
sv, &offset, temparray);
144 log_msg(NULL, 5, 0,
"\nCannot clamp %s as there is no %s!!\n\n", cl->
sv, cl->
sv);
187 if(!strlen(SVs) || !strlen(files))
190 char *svlist = strdup(SVs);
191 char *flist = strdup(files);
197 while((p = strchr(p,
':'))!=NULL) {
202 *clamps = (
Clamp*)calloc(ncol+1,
sizeof(
Clamp));
204 char* sv = strtok_r(svlist,
":", &sptr);
205 char* file = strtok_r(flist,
":", &fptr);
206 while(sv != NULL && file!= NULL) {
208 sv = strtok_r(NULL,
":", &sptr);
209 file = strtok_r(NULL,
":", &fptr);
213 log_msg(NULL, 5, 0,
"Mismatch between SV list and file list");
Define multiple ionic models to be used in different regions.
opencarp::real_t SF_real
Global scalar type.
virtual void set(const vector< T > &idx, const vector< S > &vals, const bool additive=false, const bool local=false)=0
std::vector< IonIfBase * > IIF
array of IIF's
opencarp::sf_vec * gdata[NUM_IMP_DATA_TYPES]
data used by all IMPs
node_count_t numNode
local number of nodes
node_count_t * N_Nodes
#nodes for each IMP
GlobalData_t * procdata[NUM_IMP_DATA_TYPES]
data for this processor
#define log_msg(F, L, O,...)
void(* SVputfcn)(IonIfBase &, node_index_t, int, GlobalData_t)
double trace_duration(trace *tr, const char *f)
SVputfcn getPutSV(SVgetfcn)
void resample_trace(trace *tr, double dt)
void clamp_signal(MULTI_IF *pMIIF, Clamp *cl, timer_manager *tm)
void sv_clamp(Clamp *cl, timer_manager *tm, MULTI_IF *miif, bool trigger)
int IMPdataLabel2Index(const char *sv)
bool initialize_clamp(Clamp *cl, double cl_val, double ini_val, double start, double dur, const char *f, int trans, float *duration)
GlobalData_t(* SVgetfcn)(IonIfBase &, node_index_t, int)
int process_sv_clamps(char *SVs, char *files, Clamp **clamps, double dt)
int read_trace(trace *tr, const char *name)
void initialize_sv_clamp(Clamp *cl, const char *sv, char *file, double dt)
opencarp::local_index_t node_index_t
void AP_clamp(Clamp *cl, timer_manager *tm, sf_vec *v, bool trigger)
char * dupstr(const char *old_str)
SF::abstract_vector< SF_int, SF_real > sf_vec