You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.5 KiB
64 lines
1.5 KiB
/**********
|
|
Copyright 1992 Regents of the University of California. All rights
|
|
reserved.
|
|
Author: 1992 Charles Hough
|
|
**********/
|
|
|
|
|
|
#include "ngspice/ngspice.h"
|
|
#include "ngspice/const.h"
|
|
#include "ngspice/ifsim.h"
|
|
#include "cpldefs.h"
|
|
#include "ngspice/sperror.h"
|
|
#include "ngspice/suffix.h"
|
|
|
|
|
|
static void copy_coeffs(double **dst, IFvalue *value)
|
|
{
|
|
int n = value->v.numValue;
|
|
|
|
if(*dst)
|
|
tfree(*dst);
|
|
|
|
*dst = TMALLOC(double, n);
|
|
|
|
memcpy(*dst, value->v.vec.rVec, (size_t) n * sizeof(double));
|
|
}
|
|
|
|
|
|
int
|
|
CPLmParam(int param, IFvalue *value, GENmodel *inModel)
|
|
{
|
|
register CPLmodel *model = (CPLmodel *)inModel;
|
|
switch(param) {
|
|
case CPL_R:
|
|
copy_coeffs(& model->Rm, value);
|
|
model->Rm_counter = value->v.numValue;
|
|
model->Rmgiven = TRUE;
|
|
break;
|
|
case CPL_L:
|
|
copy_coeffs(& model->Lm, value);
|
|
model->Lm_counter = value->v.numValue;
|
|
model->Lmgiven = TRUE;
|
|
break;
|
|
case CPL_G:
|
|
copy_coeffs(& model->Gm, value);
|
|
model->Gm_counter = value->v.numValue;
|
|
model->Gmgiven = TRUE;
|
|
break;
|
|
case CPL_C:
|
|
copy_coeffs(& model->Cm, value);
|
|
model->Cm_counter = value->v.numValue;
|
|
model->Cmgiven = TRUE;
|
|
break;
|
|
case CPL_length:
|
|
model->length = value->rValue;
|
|
model->lengthgiven = TRUE;
|
|
break;
|
|
case CPL_MOD_R:
|
|
break;
|
|
default:
|
|
return(E_BADPARM);
|
|
}
|
|
return(OK);
|
|
}
|