Lines Matching refs:user

71   AppCtx            *user;  in SaveSolution()  local
79 PetscCall(TSGetApplicationContext(ts, &user)); in SaveSolution()
82 idx = 3 * user->stepnum; in SaveSolution()
83 PetscCall(MatDenseGetArray(user->Sol, &mat)); in SaveSolution()
87 PetscCall(MatDenseRestoreArray(user->Sol, &mat)); in SaveSolution()
89 user->stepnum++; in SaveSolution()
94 PetscErrorCode WindSpeeds(AppCtx *user) in WindSpeeds() argument
100 user->cw = 5; in WindSpeeds()
101 user->kw = 2; /* Rayleigh distribution */ in WindSpeeds()
102 user->nsamples = 2000; in WindSpeeds()
103 user->Tw = 0.2; in WindSpeeds()
106 PetscCall(PetscOptionsReal("-cw", "", "", user->cw, &user->cw, NULL)); in WindSpeeds()
107 PetscCall(PetscOptionsReal("-kw", "", "", user->kw, &user->kw, NULL)); in WindSpeeds()
108 PetscCall(PetscOptionsInt("-nsamples", "", "", user->nsamples, &user->nsamples, NULL)); in WindSpeeds()
109 PetscCall(PetscOptionsReal("-Tw", "", "", user->Tw, &user->Tw, NULL)); in WindSpeeds()
112 PetscCall(VecCreate(PETSC_COMM_WORLD, &user->wind_data)); in WindSpeeds()
113 PetscCall(VecSetSizes(user->wind_data, PETSC_DECIDE, user->nsamples)); in WindSpeeds()
114 PetscCall(VecSetFromOptions(user->wind_data)); in WindSpeeds()
115 PetscCall(VecDuplicate(user->wind_data, &user->t_wind)); in WindSpeeds()
117 PetscCall(VecGetArray(user->t_wind, &t)); in WindSpeeds()
118 for (i = 0; i < user->nsamples; i++) t[i] = (i + 1) * tmax / user->nsamples; in WindSpeeds()
119 PetscCall(VecRestoreArray(user->t_wind, &t)); in WindSpeeds()
122 PetscCall(VecSetRandom(user->wind_data, NULL)); in WindSpeeds()
123 PetscCall(VecLog(user->wind_data)); in WindSpeeds()
124 PetscCall(VecScale(user->wind_data, -1 / user->cw)); in WindSpeeds()
125 PetscCall(VecGetArray(user->wind_data, &x)); in WindSpeeds()
126 for (i = 0; i < user->nsamples; i++) x[i] = PetscPowScalar(x[i], 1 / user->kw); in WindSpeeds()
127 PetscCall(VecRestoreArray(user->wind_data, &x)); in WindSpeeds()
128 PetscCall(VecSum(user->wind_data, &sum)); in WindSpeeds()
129 avg_dev = sum / user->nsamples; in WindSpeeds()
131 PetscCall(VecShift(user->wind_data, 1 - avg_dev)); in WindSpeeds()
132 PetscCall(VecScale(user->wind_data, vwa)); in WindSpeeds()
137 PetscErrorCode SetWindTurbineParams(AppCtx *user) in SetWindTurbineParams() argument
140 user->Rt = 35; in SetWindTurbineParams()
141 user->Ar = PETSC_PI * user->Rt * user->Rt; in SetWindTurbineParams()
142 user->nGB = 1.0 / 89.0; in SetWindTurbineParams()
143 user->rho = 1.225; in SetWindTurbineParams()
144 user->Ht = 1.5; in SetWindTurbineParams()
149 PetscErrorCode SetInductionGeneratorParams(AppCtx *user) in SetInductionGeneratorParams() argument
152 user->np = 4; in SetInductionGeneratorParams()
153 user->Xm = 3.0; in SetInductionGeneratorParams()
154 user->Xs = 0.1; in SetInductionGeneratorParams()
155 user->Xr = 0.08; in SetInductionGeneratorParams()
156 user->Rs = 0.01; in SetInductionGeneratorParams()
157 user->Rr = 0.01; in SetInductionGeneratorParams()
158 user->Xp = user->Xs + user->Xm * user->Xr / (user->Xm + user->Xr); in SetInductionGeneratorParams()
159 user->Hm = 1.0; in SetInductionGeneratorParams()
160 user->Te = 0.011063063063251968; in SetInductionGeneratorParams()
165 PetscErrorCode GetWindPower(PetscScalar wm, PetscScalar vw, PetscScalar *Pw, AppCtx *user) in GetWindPower() argument
170 temp = user->nGB * 2 * user->Rt * ws / user->np; in GetWindPower()
174 *Pw = 0.5 * user->rho * cp * user->Ar * vw * vw * vw / (MVAbase * 1e6); in GetWindPower()
181 static PetscErrorCode IFunction(TS ts, PetscReal t, Vec U, Vec Udot, Vec F, AppCtx *user) in IFunction() argument
193 PetscCall(VecGetArray(user->wind_data, &wd)); in IFunction()
195 f[0] = user->Tw * udot[0] - wd[stepnum] + u[0]; in IFunction()
197 PetscCall(GetWindPower(wm, u[0], &Pw, user)); in IFunction()
198 f[1] = 2.0 * (user->Ht + user->Hm) * udot[1] - Pw / wm + user->Te; in IFunction()
200 PetscCall(VecRestoreArray(user->wind_data, &wd)); in IFunction()
214 AppCtx user; in main() local
242 PetscCall(WindSpeeds(&user)); in main()
244 PetscCall(SetWindTurbineParams(&user)); in main()
245 PetscCall(SetInductionGeneratorParams(&user)); in main()
253 user.stepnum = 0; in main()
255 PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, 3, 2010, NULL, &user.Sol)); in main()
263 PetscCall(TSSetIFunction(ts, NULL, (TSIFunctionFn *)IFunction, &user)); in main()
268 PetscCall(TSSetApplicationContext(ts, &user)); in main()
276 idx = 3 * user.stepnum; in main()
278 PetscCall(MatDenseGetArray(user.Sol, &mat)); in main()
284 PetscCall(MatDenseRestoreArray(user.Sol, &mat)); in main()
286 user.stepnum++; in main()
301 PetscCall(MatCreateSeqDense(PETSC_COMM_SELF, 3, user.stepnum, NULL, &B)); in main()
302 PetscCall(MatDenseGetArrayRead(user.Sol, &rmat)); in main()
304 PetscCall(PetscArraycpy(amat, rmat, user.stepnum * 3)); in main()
306 PetscCall(MatDenseRestoreArrayRead(user.Sol, &rmat)); in main()
311 PetscCall(MatDestroy(&user.Sol)); in main()
316 PetscCall(VecDestroy(&user.wind_data)); in main()
317 PetscCall(VecDestroy(&user.t_wind)); in main()