rhsfunction.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 static char const Id[] = "$Id: rhsfunction.c 2962 2010-02-04 19:50:44Z scholz $\n\n";
00025 static char const Td[] = "$Today: " __FILE__ " " __DATE__ " " __TIME__ " $\n\n";
00026
00027 #include "llg.h"
00028
00029 static Vec dMdt=PETSC_NULL;
00030
00031 int RHSfunction(realtype t,N_Vector u,N_Vector udot,void *f_data)
00032 {
00033 GridData *gdata = (GridData*)f_data;
00034
00035 MagparFunctionInfoBegin;
00036 t_t2=0;
00037
00038
00039 if (dMdt==PETSC_NULL) {
00040
00041 ierr = VecDuplicate(gdata->M,&dMdt);
00042 }
00043
00044 #ifdef UNIPROC
00045 ierr = VecPlaceArray(gdata->M,NV_DATA_S(u));
00046 ierr = VecPlaceArray(dMdt,NV_DATA_S(udot));
00047 #else
00048 ierr = VecPlaceArray(gdata->M,NV_DATA_P(u));
00049 ierr = VecPlaceArray(dMdt,NV_DATA_P(udot));
00050 #endif
00051
00052
00053 gdata->time=t;
00054
00055 calc_dMdt(PETSC_NULL,0.0,gdata->M,dMdt,gdata);
00056
00057
00058
00059
00060
00061
00062
00063
00064 ierr = VecResetArray(gdata->M);
00065 ierr = VecResetArray(dMdt);
00066
00067 #if SUNDIALS_VERSION >= 230
00068 MagparFunctionProfReturn(0);
00069 #else
00070 PetscFunctionReturnVoid();
00071 #endif
00072 }
00073