2.1 Manual construction of a D.S. B HREF="./Modulef.css" TITLE="Modulef CSS"> ALT="Modulef"> ALT="previous"> ALT="up"> ALT="next"> ALT="contents"> ALT="[BIG]"> ALT="[Normal]"> ALT="[small]"> Next: 2.2 Symmetrization and "gluing together" of Up: 2 Manipulation of solutions Prev: 2 Manipulation of solutions >Contents 2.1 Manual construction of a D.S. B Preprocessor COSDXX constructs a D.S. B from: a given value: all the degrees of freedom are assigned to this value; a function dependent on the nodal coordinates, using: D.S. NOPO, D.S. MAIL and COOR, in particular for the case where the number of degrees of freedom per node, ND, is not constant. For the case where a given value is assigned (via a vector), module COSDB is called. To assign a value dependent on the nodal coordinates, we use module COSNOB which, for a constant ND, exploits D.S. NOPO, or we use module COSMCB which, for arbitrary ND, exploits D.S. MAIL and COOR. Module COSDB corresponds to the case where we input a vector (U), or two vectors (U et V), to construct the D.S. B such that: or, to create one structure with two arrays B4 (two vectors are therefore used): SUBROUTINE COSDB(M,NVEC,U,V,LUV,ND,NFB,NIB,NTAB) C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C UTILITY COSDB : CREATE A DS B FROM ONE OR TWO VECTORS C ------------- C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ where M is the super array, NVEC is the number of vectors input (1 or 2) indicating that we want one or two arrays B4. If NVEC > 0, the structure is in single precision, for a negative NVEC, it is in double precision, U (V) are the vectors duly filled (as a function of type) containing the values to assign, LUV is the number of words of each vector, NFB, NIB and NTAB are the file number, the level and the number of arrays to associate to the O.D.S. B. If NTAB is non-zero, we need to input: Loop I from 1 to NTAB name of array I in 4 characters, type of array (1 = integer, 2 = real single precision, 4 = character, 5 = real double precision, ...), number of words in the array, the array variables, comments pertaining to the contents of array I in 18 words of 4 characters. End of loop. Module COSNOB corresponds to the case where one vector (U) or two vectors (U and V) are calculated to construct the D.S. B such that: or, to create a structure with two arrays B4 (two vectors are therefore used): Functions VALCL* are in fact VALCLR, in single precision, and VALCLD, in double precision. Their arguments are I (from 1 to ND), assumed constant, see lower down) the degree of freedom number, X, Y and Z the coordinates of the point under consideration read into array NOP4 of data structure NOPO. These functions are input: in the form of a FUNCTION in the case of a classical call of the module (FONINT = .FALSE.), in the interpreted or parsed form, or in the form of a FUNCTION (choice given) in the case of a call via COSDXX. SUBROUTINE COSNOB(M,XM,NFNOPO,NINOPO,NVEC,U,V,DU,DV,ND, + NFB,NIB,NTAB,FONINT,VALCLR,VALCLD) C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C UTILITY COSNOB : CREATE A DS B FROM NOPO AND A FUNCTION C -------------- ( SAME AIM AS COSDB ) C U(I) ( V(I) ) = FUNCTION(X(I),Y(I),Z(I)) AT POINT IOF THE DS NOPO C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ where M and XM represent the super array, NFNOPO, NINOPO are the file number and the level of structure NOPO, NVEC is the number of vectors (1 or 2) indicating that we want one or two arrays B4. If NVEC > 0, the structure is in single precision, for NVEC negative, it is in double precision, U or DU (V or DV) are the vectors which are used (according to type) with the values to assign, ND is the number (assumed constant) of degrees of freedom at each node, NFB, NIB and NTAB are the file number, the level and the number of arrays to associate with the O.D.S. B, FONINT is a logical set to .TRUE. if we use functions VALCLR or VALCLD in the interpreted form, .FALSE. if we use them normally. If NTAB is non-zero, we must input: Loop I from 1 to NTAB name of array I in 4 characters, type of array (1 = integer, 2 = real single precision, 4 = character, 5 = real double precision, ...), number of words in the array, the array variables, comments pertaining to the contents of array I in 18 words of 4 characters. End of loop. Depending on the value of FONINT, we need to, or not, write functions VALCL*. VALCLR and VALCLD have the following form: FUNCTION VALCLR(I,X,Y,Z) DOUBLE PRECISION FUNCTION VALCLD(I,X,Y,Z) Note further that the number of variables of the vectors is calculated as where NP is the number of points in the mesh. Module COSMCB corresponds to the case where vector (U) or two vectors (U et V) are calculated to construct the D.S. B such that: or, to create a structure with two arrays B4 (two vectors are therefore used): Functions VALCL* are in fact VALCLR in single precision and VALCLD in double precision. Their arguments are I (from 1 to ND, see lower down) the degree of freedom number, X, Y and Z the coordinates of the point under consideration read into array COO4 of structure COOR associated to the MAIL data structure. These functions are input: in the form of a FUNCTION in the case of a classical call of the module (FONINT = .FALSE.), in the interpreted form or in the form of a FUNCTION in the case of a call via COSDXX. SUBROUTINE COSMCB (M,XM,DM,NFMAIL,NIMAIL,NFCOOR,NICOOR,NVEC, + NFB,NIB,NTAB,FONINT,VALCLR,VALCLD,U,V,DU,DV) C ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C UTILITY COSMCB : CREATE A DS B FROM MAIL AND COOR AND C -------------- A FUNCTION ( SAME AIM AS COSDB ) C U(I) ( V(I) ) = FUNCTION(X(I),Y(I),Z(I)) AT POINT I OF DS COOR C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ where M, XM and DM represent the super array, NFMAIL, NIMAIL are the file number and the level of structure MAIL, NFCOOR, NICOOR are the file number and the level of structure COOR, NVEC is the number of vectors (1 or 2) indicating that we want one or two arrays B4. If NVEC > 0, the structure is in single precision, for NVEC negative, it is in double precision, U or DU (V or DV) are the vectors which are used (according to type) with the values to assign, NFB, NIB and NTAB are the file number, the level and the number of arrays to associate with the O.D.S. B, FONINT is a logical set to .TRUE. if we use functions VALCLR or VALCLD in the interpreted form, .FALSE. if we use them normally. If NTAB is non-zero, we must input: Loop I from 1 to NTAB name of array I in 4 characters, type of array (1 = integer, 2 = real single precision, 4 = character, 5 = real double precision, ...), number of words in the array, the array variables, comments pertaining to the contents of array I in 18 words of 4 characters. End of loop. Depending on the value of FONINT, we need to, or not, write the functions VALCL*. Note that VALCLR and VALCLD have the following form: FUNCTION VALCLR(I,X,Y,Z) DOUBLE PRECISION FUNCTION VALCLD(I,X,Y,Z) ALT="Modulef"> ALT="previous"> ALT="up"> ALT="next"> ALT="contents"> ALT="[BIG]"> ALT="[Normal]"> ALT="[small]"> Next: 2.2 Symmetrization and "gluing together" of Up: 2 Manipulation of solutions Prev: 2 Manipulation of solutions >Contents