00001 #include "loadn.h"
00002 #include "global.h"
00003 #include "gtopology.h"
00004 #include "intools.h"
00005 #include "stochdriver.h"
00006
00007
00008
00009
00010
00011
00012
00013
00014 loadn::loadn()
00015 {
00016 nid = nlc = 0L;
00017 f = NULL;
00018 }
00019
00020
00021
00022
00023
00024
00025
00026
00027 loadn::~loadn()
00028 {
00029 delete [] f;
00030 }
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 long loadn::read(XFILE *in)
00046 {
00047 long ndofn;
00048
00049 xfscanf(in, "%ld",&nid);
00050 if (nid<1)
00051 print_err("number of loaded node is nonpositive", __FILE__, __LINE__, __func__);
00052 if (nid>Mt->nn)
00053 print_err("number of loaded node (%ld) > total number of nodes (%ld)", __FILE__, __LINE__, __func__, nid, Mt->nn);
00054 nid--;
00055 ndofn = Mt->give_ndofn (nid);
00056 f = new double [ndofn];
00057 for (long i = 0; i < ndofn; i++)
00058 xfscanf(in, "%le", &f[i]);
00059 return(0);
00060 }
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 long loadn::print(FILE *out)
00075 {
00076 long ndofn;
00077
00078 fprintf (out, "\n %ld",nid+1);
00079 ndofn = Mt->give_ndofn (nid);
00080
00081 for (long i = 0; i < ndofn; i++)
00082 fprintf(out, " %le", f[i]);
00083 return(0);
00084 }
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 long loadn::read_prop(FILE *in, long ndof, long lc)
00102 {
00103 getlong(in, nlc);
00104 if ((nlc < 1) || (nlc > lc))
00105 return(2);
00106 f = new double [ndof];
00107 for (long i = 0; i < ndof; i++)
00108 getdouble(in, f[i]);
00109 return(0);
00110 }
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 void loadn::changeparam (atsel &atln,vector &val)
00125 {
00126 long i;
00127
00128 for (i=0;i<atln.num;i++){
00129 f[atln.atrib[i]]=val[i];
00130 }
00131 }