Following enhancements are planned ## Blas functions - [x] AXPY - [x] SCAL - [x] COPY - [ ] SWAP - [ ] XPAY - [ ] AXPYZ - [ ] PMUL - [ ] PDIV - [ ] SETALL - [ ] ABS - [ ] RECIPROCAL - [ ] SHIFT - [ ] DOT_PRODUCT - [ ] NORM1 - [x] NORM2 - [ ] NORMi - [ ] SUM ## Dirichlet boundary condition - [ ] ApplyDBC(dbc, times) - [ ] ApplyDBC by using external field data (when dbc%isExternal is true) - In this method, we should not allocate the array every time we apply the boundary condition. ## Set value ### SetByFunction - [x] Set by user function (Partially) - [ ] Set by reading a file (Partially) - [ ] Set by HDF5 (Partially) ```fortran INTERFACE MODULE SUBROUTINE obj_SetByFunction(obj, func, times, ivar, idof, & & spaceCompo, timeCompo) CLASS(AbstractNodeField_), INTENT(INOUT) :: obj CLASS(UserFunction_), INTENT(INOUT) :: func REAL(DFP), OPTIONAL, INTENT(IN) :: times(:) INTEGER(I4B), OPTIONAL, INTENT(IN) :: ivar INTEGER(I4B), OPTIONAL, INTENT(IN) :: idof INTEGER(I4B), OPTIONAL, INTENT(IN) :: spaceCompo INTEGER(I4B), OPTIONAL, INTENT(IN) :: timeCompo END SUBROUTINE obj_SetByFunction END INTERFACE ``` Currently, in this function we are not using the `ivar`, `idof`, `spaceCompo`, `timeCompo`. The following enhancements are planed. #### ScalarField Do Nothing #### STScalarField - use `timeCompo` to set the value of a specific time component. - In this case, if `times` present then it size should 1, which represents the times for the time component. #### VectorField - use `spaceCompo` to set the value of a specific space component. - In this case, the return type of function should be a `scalar` - If `times` present then its size should be 1, which represents the times at which the value is set. #### STVectorField - use `spaceCompo` and/or `timeCompo` to set the value of a specific space and/or time component.
Activity